事务:
sqlite默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作,比如10条计入就要10次读写磁盘操作。
解决方法:
添加事务处理,把10条操作看做一个事务。
1.SQLiteDatabase 方法
public void beginTransaction(); 开始事务
注意:事务可以嵌套,通过setTransactionSuccessful标记, 当所有操作都成功时,事务才提交,否则回滚。
db.beginTransaction();
try{
......
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}
2.public void setTransactionSuccessful();
标记事务成功,在此方法和endTransaction之间尽力不要有关于数据库的调用,否则,这期间出错,事务仍会提交。
3.public void beginTransactionWithListener(SQLiteTransactionListener transactionListener);
此方法和beginTransaction()用法一致,只是可以侦听事务。
db.beginTransactionWithListener(listener);
try{
...........
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}
sqlite默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作,比如10条计入就要10次读写磁盘操作。
解决方法:
添加事务处理,把10条操作看做一个事务。
1.SQLiteDatabase 方法
public void beginTransaction(); 开始事务
注意:事务可以嵌套,通过setTransactionSuccessful标记, 当所有操作都成功时,事务才提交,否则回滚。
db.beginTransaction();
try{
......
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}
2.public void setTransactionSuccessful();
标记事务成功,在此方法和endTransaction之间尽力不要有关于数据库的调用,否则,这期间出错,事务仍会提交。
3.public void beginTransactionWithListener(SQLiteTransactionListener transactionListener);
此方法和beginTransaction()用法一致,只是可以侦听事务。
db.beginTransactionWithListener(listener);
try{
...........
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}