Uso de transações
Instruções SQLite são sempre executadas em transações. Se a instrução for executada com êxito, a transação será automaticamente confirmada. Se a instrução fracassar, a transação será revertida.
Por padrão, uma transação separada é criada para cada instrução SQLite, o que é menos eficiente do que executar várias instruções em uma transação. Geralmente, pode-se melhorar o desempenho especificando explicitamente transações para grupos de instruções. Você pode executar múltiplas instruções em uma transação usando Database.beginTransaction() e Database.commitTransaction() ao redor de grupos de instruções.
Transações aninhadas não são suportadas.
Exemplo de código: Uso de transações
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();
}
}
}
Estas informações foram úteis? Gostaríamos de receber seus comentários.