개발 가이드

Local Navigation

데이터베이스 열기 및 닫기

DatabaseFactory 클래스에서 open 메소드 또는 openOrCreate 메소드를 사용하여 데이터베이스를 열 수 있습니다.

데이터베이스에 대해 읽기 전용 연결은 여러 개를 열 수 있지만 읽기/쓰기 연결은 한 번에 하나만 만들 수 있습니다.

데이터베이스를 읽기/쓰기 및 읽기 전용 모두로 열고 싶은 경우 먼저 읽기/쓰기로 여십시오. 읽기/쓰기든 읽기 전용이든 상관없이 이미 열려 있는 데이터베이스를 읽기/쓰기로 열려고 시도하면 "파일 시스템 오류 12"가 발생합니다. 이는 동일한 데이터베이스에 대해 두 개 이상의 읽기/쓰기 연결을 열려고 시도했었음을 나타냅니다.

데이터베이스를 닫으려면 Database.close 메소드를 사용합니다. close가 항상 호출되도록 하려면 finally 블록에서 호출해야 합니다.

파일 시스템이 분리되면 데이터베이스가 자동으로 닫힐 수 있습니다. 예를 들어, 데이터베이스 파일이 외장 미디어 카드에 저장되어 있고 사용자가 스마트폰을 컴퓨터에 연결한 다음 USB 대용량 저장 모드를 활성화한 경우, 파일 시스템은 컴퓨터 운영 체제에 의해 관리되어 단말기에서 파일 시스템에 액세스할 수 없게 되므로 데이터베이스가 닫힐 수 있습니다. 외장 카드의 열려 있는 모든 데이터베이스가 닫히며 USB 대용량 저장 모드가 끝날 때까지 열 수 없습니다.

Database.getCacheUsed, Database.getSchemaUsedDatabase.getStatementUsed 메소드를 사용하여 각 데이터베이스 연결에 대한 메모리 사용을 추적할 수 있습니다.

데이터베이스 연결 및 분리

기존 데이터베이스 연결에 데이터베이스를 연결하면 데이터베이스를 연결할 때 해당 데이터베이스에 지정한 이름을 사용하여 하나의 SQL 문에서 여러 개의 데이터베이스를 쿼리할 수 있습니다. 처음 연결하는 데이터베이스를 main 데이터베이스라고 합니다.

일반 텍스트 및 암호화된 데이터베이스 모두 연결할 수 있습니다. Database.attach 메소드를 사용하여 기존 데이터베이스 연결에 데이터베이스를 10개까지 연결할 수 있습니다. Database.detach 메소드를 사용하여 데이터베이스를 분리할 수 있습니다.

주: 중요한 정보를 포함하는 프로그램의 경우 다른 프로그램에서 attach 메소드를 사용하여 액세스할 수 없도록 암호화되고 보호된 데이터베이스를 사용해야 합니다.

Database.detach 대신 SQLite DETACH 명령을 사용하여 데이터베이스를 분리할 수 있습니다. 보안상의 이유로 Database API는 SQL 문에서 ATTACH 명령을 사용할 수 없습니다.

현재 데이터베이스 연결에 연결된 데이터베이스를 보려면 database_list pragma를 사용하십시오.

다음 코드 조각은 Database API를 사용하여 일반 텍스트 데이터베이스를 현재 데이터베이스에 연결합니다.

URI myURI = URI.create("file:///SDCard/test.db");
d.attach(myURI, "test", null);
//Do something with the attached database

다음 코드 조각은 detach 메소드를 사용하여 데이터베이스를 분리합니다.

d.detach("test");

다음 코드 조각은 SQL 문을 사용하여 데이터베이스를 분리합니다.

d.executeStatement("DETACH test");

이 정보가 도움이 되었습니까? 의견을 보내 주십시오.