Guida allo sviluppo

Local Navigation

Uso delle transazioni

Le istruzioni SQLite vengono sempre eseguite nelle transazioni. Se l'istruzione viene eseguita correttamente, viene eseguito automaticamente il commit della transazione. Se l'istruzione non riesce, la transazione viene ripristinata.

Per impostazione predefinita, viene creata una transazione separata per ogni istruzione SQLite. Questo approccio è meno efficiente rispetto all'esecuzione di più istruzioni in una sola transazione. In genere, è possibile migliorare le prestazioni specificando esplicitamente le transazioni per i gruppi di istruzioni. È possibile eseguire più istruzioni in una sola transazione utilizzando Database.beginTransaction() e Database.commitTransaction() in gruppi di istruzioni.

Le transazioni annidate non sono supportate.

Esempio di codice: utilizzo delle transazioni

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();
     }
  }
}

Le informazioni sono state utili? Inviateci i vostri commenti.