Guia do desenvolvedor

Local Navigation

Abrir e fechar bancos de dados

Para abrir um banco de dados, você pode usar o método open ou o método openOrCreate, ambos na classe DatabaseFactory.

Você pode abrir múltiplas conexões somente-leitura para um banco de dados, mas somente uma conexão de leitura-gravação pode ser feita ao mesmo tempo.

Se você deseja abrir um banco de dados como leitura-gravação e somente-leitura, abra-o primeiramente como leitura-gravação. Uma tentativa de abrir um banco de dados como leitura-gravação quando está já está aberto (ou como leitura-gravação ou somente-leitura) irá gerar um "Erro do sistema de arquivos 12", que indica que houve uma tentativa de abrir mais de uma conexão de leitura-gravação para o mesmo banco de dados.

Para fechar um banco de dados, use o método Database.close. Para certificar-se de que close sempre será chamado, você deve chamá-lo em um bloco finally.

O banco de dados pode fechar automaticamente quando o sistema de arquivos for desmontado. Por exemplo, se um arquivo de banco de dados for armazenado em um cartão de memória externo e o usuário conectar o smartphone a um computador e habilitar o modo de armazenamento em massa de USB, o banco de dados pode fechar porque o sistema de arquivos é gerenciado pelo sistema operacional do computador e o aparelho não tem acesso a ele. Todos os bancos de dados abertos no cartão externo fecham e não podem ser abertos até que o modo de armazenamento em massa de USB seja concluído.

Você pode controlar uso de memória para cada conexão de banco de dados usando os seguintes métodos: Database.getCacheUsed, Database.getSchemaUsed e Database.getStatementUsed.

Anexar e separar bancos de dados

Anexar um banco de dados a uma conexão existente de banco de dados permite que você consulte vários bancos de dados em uma única instrução SQL, usando os nomes que você especifica para os bancos de dados quando você os anexa. O primeiro banco de dados a conectar é chamado de banco de dados main.

Tanto texto sem formatação como bancos de dados criptografados podem ser anexados. Você pode anexar até dez bancos de dados a uma conexão de banco de dados existente usando o método Database.attach. Você pode separar bancos de dados usando o método Database.detach.

Nota: Os aplicativos com informações confidenciais devem usar bancos de dados criptografados e protegidos para impedir que outros aplicativos usem o método attach para acessá-los.

Como uma alternativa a Database.detach, você pode usar o comando DETACH do SQLite para separar bancos de dados. Por motivos de segurança, a API Database não permite o uso do comando ATTACH em uma instrução SQL.

Para ver quais bancos de dados estão anexados à conexão atual de banco de dados, use o pragma database_list.

O trecho de código a seguir usa a API Database para anexar um banco de dados de texto sem formatação ao banco de dados atual.

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

O trecho de código a seguir separa o banco de dados usando o método detach.

d.detach("test");

O trecho de código a seguir separa o banco de dados usando uma instrução SQL.

d.executeStatement("DETACH test");
Próximo tópico: Aplicativo de exemplo SQLite

Estas informações foram úteis? Gostaríamos de receber seus comentários.