Entwicklungshandbuch

Local Navigation

Arbeiten mit SQLite-Datenbanken

Nach dem Erstellen einer SQLite-Datenbank können Sie SQL-Anweisungen verwenden, um z. B. Daten hinzuzufügen, Daten abzurufen und die Datenbank zu ändern.

Die Liste unterstützter SQL-Anweisungen und ihre Syntax finden Sie auf www.SQLite.org. Die Datenbank-API unterstützt nicht FTS2 und RTREE.

Es gibt zwei Möglichkeiten, Anweisungen auszuführen: Erstellen eines Statement-Objekts oder Verwenden von Database.executeStatement.

Ausführen von Anweisungen mit einem Statement-Objekt

Die folgenden Schritte beschreiben, wie Anweisungen mit einem Statement-Objekt ausgeführt werden:

  1. Erstellen Sie ein Statement-Objekt mithilfe der Database.createStatement-Methode.
  2. Bereiten Sie die Anweisung durch Aufrufen der Statement.prepare-Methode für die Ausführung vor.
  3. Binden Sie Parameter in die Anweisung. Dies ist optional, verbessert aber die Leistung, wenn Sie die Anweisung mehrmals ausführen.
  4. Führen Sie die Anweisung aus.
    • Wenn die Anweisung möglicherweise Ergebnisse zurückgibt (wie z. B. eine SELECT-Anweisung), führen Sie sie durch Aufrufen von Statement.getCursor aus, das ein Cursor-Objekt zurückgibt.

    • Wenn die Anweisung keinen Ergebnissatz zurückgibt, führen Sie sie durch Aufrufen einer der folgenden Methoden aus:
      • Statement.executeUpdate: Für das Aktualisieren von Daten (mit einer UPDATE-Anweisung) und das mehrmalige Ausführen der Anweisung mit Bindungsparametern.
      • Statement.executeInsert: Für das Einfügen von Daten (mit einer INSERT-Anweisung) und das mehrmalige Ausführen der Anweisung mit Bindungsparametern.
      • Statement.execute: Für die Verwendung von Bindungsparametern.
  5. Wenn die Anweisung einen Ergebnissatz zurückgibt, rufen Sie den Ergebnissatz durch Iteration über der zurückgegebenen Cursorreihe Reihe für Reihe ab. Verwenden Sie dazu die Cursor-Schnittstelle, die in allen Situationen eingesetzt werden kann, allerdings nur für Vorwärtsbewegungen. Verwenden Sie für bidirektionale Cursor-Bewegungen mit kleinen Ergebnissätzen die BufferedCursor-Klasse.
Anmerkung: Sie sollten Anweisungen explizit schließen, um Ressourcen freizugeben.

Im folgenden Beispiel werden Zeilen aktualisiert:

Statement st = d.createStatement("UPDATE Account set Balance = ? WHERE AcctNo > ?"); 
try 
{ 
    st.prepare(); 
    Object[] bindParams = {new Integer (2000), new Integer (100)};
    st.executeUpdate(bindParams); 
} 
finally 
{
    st.close(); 
}

Ausführen von Anweisungen ohne ein Statement-Objekt

Wenn Sie eine Abfrage ausführen, die keinen Ergebnissatz zurückgibt, und Sie keine Bindungsparameter verwenden, brauchen Sie kein Statement-Objekt zu erstellen. Stattdessen können Sie Database.executeStatement verwenden, das eine Anweisung in einem einzigen Aufruf vorbereitet, ausführt und schließt.

Im folgenden Beispiel wird eine Tabelle erstellt:

Database d = null;
try {
    d = DatabaseFactory.create("hello.db");
    d.executeStatement( "CREATE TABLE t (a INTEGER PRIMARY KEY, b BLOB);" );            
} catch (Exception e) {
    System.out.println( e.getMessage() );
} finally {
    try {
        d.close();
    } catch (DatabaseException e) {
    }
}

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.