Guía de desarrollo

Local Navigation

Uso de transacciones

Las instrucciones de SQLite siempre se ejecutan en transacciones. Si la instrucción se ejecuta correctamente, la transacción se lleva a cabo automáticamente. Si la instrucción genera error, la transacción se revierte.

De forma predeterminada, se creará una transacción independiente para cada instrucción de SQLite, lo cual es menos eficaz que ejecutar varias instrucciones en una transacción. Normalmente puede mejorar el rendimiento especificando explícitamente las transacciones para grupos de instrucciones. Puede ejecutar varias instrucciones en una transacción mediante Database.beginTransaction() y Database.commitTransaction() alrededor de los grupos de instrucciones.

Las transacciones anidadas no son compatibles.

Ejemplo de código: utilizar transacciones

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 ha resultado útil esta información? Envíenos sus comentarios.