Entwicklungshandbuch

Local Navigation

Verwenden von Transaktionen

SQLite-Anweisungen werden immer in Transaktionen ausgeführt. Wenn die Anweisung erfolgreich ausgeführt wird, wird für die Transaktion automatisch ein Commit durchgeführt. Wenn die Anweisung fehlschlägt, wird die Transaktion zurückgesetzt.

Standardmäßig wird eine separate Transaktion für jede SQLite-Anweisung erstellt, was weniger effizient ist als das Ausführen mehrerer Anweisungen in einer einzigen Transaktion. Sie können die Leistung meist durch explizites Angeben von Transaktionen für Gruppen von Anweisungen verbessern. Sie können mehrere Anweisungen in einer Transaktion mithilfe von Database.beginTransaction() und Database.commitTransaction() um Gruppen von Anweisungen ausführen.

Verschachtelte Transaktionen werden nicht unterstützt.

Codebeispiel: Verwenden von Transaktionen

import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.database.*;
import net.rim.device.api.io.*;
public class UsingTransactions extends UiApplication
{
    public static void main(String[] args)
    {
        UsingTransactions theApp = new UsingTransactions();
        theApp.enterEventDispatcher();
    }
    public UsingTransactions()
    {
    }
}
class UsingTransactionsScreen extends MainScreen
{
    Database d;
    public UsingTransactionsScreen()
    {
       LabelField title = new LabelField("SQLite Using Transactions Sample",
       LabelField.ELLIPSIS |
       LabelField.USE_ALL_WIDTH);
       setTitle(title);
       add(new RichTextField(
              "Updating data in one transaction in MyTestDatabase.db."));
       try
       {
          URI myURI = URI.create("file:///SDCard/Databases/SQLite_Guide/" +
              "MyTestDatabase.db");
          d = DatabaseFactory.open(myURI);
          d.beginTransaction();
          Statement st = d.createStatement("UPDATE People SET Age=7 " +
              "WHERE Name='Sophie'");
          st.prepare();
          st.execute();
          st.close();
          st = d.createStatement("UPDATE People SET Age=4 " +
              "WHERE Name='Karen'");
          st.prepare();
          st.execute();
          st.close();
          d.commitTransaction();
          d.close();
     }
     catch ( Exception e )
     {
          System.out.println( e.getMessage() );
          e.printStackTrace();
     }
  }
}

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.