Guida allo sviluppo

Local Navigation

Apertura e chiusura dei database

Per aprire un database, è possibile utilizzare il metodo open o openOrCreate, entrambi nella classe DatabaseFactory.

È possibile aprire connessioni multiple di sola lettura per un database, ma è possibile eseguire contemporaneamente una sola connessione di lettura/scrittura.

Se si desidera aprire un database sia in modalità di lettura/scrittura che di sola lettura, aprirlo prima in modalità di lettura/scrittura. Il tentativo di aprire un database in modalità di lettura/scrittura quando è già aperto (sia in modalità di lettura/scrittura che di sola lettura) genererà un messaggio del tipo "Errore del file system 12", indicante che vi è stato un tentativo di aprire più connessioni di lettura/scrittura per lo stesso database.

Per chiudere un database, utilizzare il metodo Database.close. Per assicurarsi che close venga sempre chiamato, è necessario chiamarlo in un blocco finally.

Il database potrebbe chiudersi automaticamente quando il file system non è disponibile. Ad esempio, se un file del database viene memorizzato in una scheda di memoria esterna e l'utente connette lo smartphone a un computer attivando la modalità di memorizzazione di massa USB, il database potrebbe chiudersi perché il file system è gestito dal sistema operativo del computer e il dispositivo non dispone del relativo accesso. Tutti i database aperti sulla scheda esterna si chiudono e non possono essere aperti fino al completamento della modalità di memorizzazione di massa USB.

È possibile tenere traccia dell'utilizzo della memoria per ciascuna connessione al database tramite i seguenti metodi: Database.getCacheUsed, Database.getSchemaUsed e Database.getStatementUsed.

Aggiunta o rimozione dei database

L'aggiunta di un database a una connessione al database esistente consente di inviare una query a più database in una singola istruzione SQL, utilizzando i nomi specificati dall'utente per i database al momento dell'aggiunta. Il primo database da connettere è considerato il database main.

È possibile allegare sia database in testo normale che crittografati. È possibile allegare fino a dieci database a una connessione al database esistente, tramite il metodo Database.attach. È possibile rimuovere i database tramite il metodo Database.detach.

Nota: Le applicazioni contenenti informazioni sensibili devono utilizzare database crittografati e protetti, per impedire ad altre applicazioni di utilizzare il metodo attach per accedere a tali informazioni.

Come alternativa a Database.detach, è possibile utilizzare il comando DETACH di SQLite per rimuovere i database. Per motivi di sicurezza, l'API Database non consente l'utilizzo del comando ATTACH in un'istruzione SQL.

Per visualizzare i database allegati alla connessione al database corrente, utilizzare il pragma database_list.

Nel frammento di codice seguente, viene utilizzata l'API Database per allegare un database in testo normale al database corrente.

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

Nel frammento di codice seguente, viene rimosso il database tramite il metodo detach.

d.detach("test");

Nel frammento di codice seguente, viene rimosso il database tramite un'istruzione SQL.

d.executeStatement("DETACH test");
Argomento successivo: Applicazione di esempio SQLite

Le informazioni sono state utili? Inviateci i vostri commenti.