Entwicklungshandbuch

Local Navigation

Öffnen und Schließen von Datenbanken

Um eine Datenbank zu öffnen, können Sie die open-Methode oder die openOrCreate-Methode verwenden, die sich beide in der DatabaseFactory-Klasse befinden.

Sie können mehrere schreibgeschützte Verbindungen zu einer Datenbank öffnen, aber immer nur eine Lese-/Schreibverbindung auf einmal.

Wenn Sie eine Datenbank sowohl mit einer Lese-/Schreibverbindung als auch einer schreibgeschützten Verbindung öffnen möchten, öffnen Sie sie zuerst mit der Lese-/Schreibverbindung. Der Versuch, eine Datenbank mit einer Lese-/Schreibverbindung zu öffnen, die bereits geöffnet ist (entweder per Lese-/Schreibverbindung oder per schreibgeschützter Verbindung), wird "Dateisystemfehler 12" angezeigt, was darauf hinweist, dass versucht wurde, mehr als eine Lese-/Schreibverbindung zu derselben Datenbank zu öffnen.

Um eine Datenbank zu schließen, verwenden Sie die Database.close-Methode. Um sicherzustellen, dass close immer aufgerufen wird, sollten Sie es in einem finally-Block aufrufen.

Die Datenbank wird möglicherweise automatisch geschlossen, wenn das Dateisystem nicht bereitgestellt wurde. Wenn zum Beispiel eine Datenbankdatei auf einer externen Medienkarte gespeichert ist und der Benutzer das Smartphone mit einem Computer verbindet und den USB-Massenspeichermodus aktiviert, wird die Datenbank möglicherweise geschlossen, weil das Dateisystem vom Betriebssystem des Computers verwaltet wird und das Gerät keinen Zugriff darauf hat. Alle geöffneten Datenbanken auf der externen Karte werden geschlossen und können erst geöffnet werden, wenn der USB-Massenspeichermodus beendet wurde.

Sie können die Speicherauslastung für jede Datenbankverbindung mithilfe der folgenden Methoden nachverfolgen: Database.getCacheUsed, Database.getSchemaUsed und Database.getStatementUsed.

Anfügen und Trennen von Datenbanken

Das Anfügen einer Datenbank an eine vorhandene Datenbankverbindung ermöglicht Ihnen, mehrere Datenbanken in einer einzigen SQL-Anweisung abzufragen, wobei Sie die Namen verwenden, die Sie für die Datenbanken beim Anfügen festlegen. Die erste zu verbindende Datenbank wird als main-Datenbank bezeichnet.

Es können sowohl Nur-Text-Datenbanken als auch verschlüsselte Datenbanken angefügt werden. Sie können mithilfe der Database.attach-Methode bis zu zehn Datenbanken an eine vorhandene Datenbankverbindung anfügen. Mithilfe der Database.detach-Methode können Sie Datenbanken trennen.

Anmerkung: Anwendungen mit vertraulichen Informationen sollten verschlüsselte und geschützte Datenbanken verwenden, um andere Anwendungen daran zu hindern, mithilfe der attach-Methode auf sie zuzugreifen.

Als Alternative zu Database.detach können Sie den SQLite-DETACH-Befehl verwenden, um Datenbanken zu trennen. Aus Sicherheitsgründen erlaubt die Datenbank-API nicht die Verwendung des ATTACH-Befehls in einer SQL-Anweisung.

Um zu sehen, welche Datenbanken an die aktuelle Datenbankverbindung angefügt sind, verwenden Sie das database_list-Pragma.

Der folgende Codeausschnitt verwendet die Datenbank-API, um eine Nur-Text-Datenbank an die aktuelle Datenbank anzufügen.

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

Der folgende Codeausschnitt trennt die Datenbank mithilfe der detach-Methode.

d.detach("test");

Der folgende Codeausschnitt trennt die Datenbank mithilfe einer SQL-Anweisung.

d.executeStatement("DETACH test");
Nächstes Thema: SQLite-Beispielanwendung

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.