android sqlite的SqliteDataBase.insert()方法,以及如何在事务管理中使用
2015-10-14 22:06
567 查看
1.db.insert()方法,方法中已经写了try catch块,会捕捉SqliteException,因此如果直接用
db.beginTransaction();
try{
db.insert(...);
db.setTransactionSuccessful();
}finally{
db.endtransaction();
}
这样的代码去开启事务,会导致无论是否插入成功,代码一定会执行到db.setTransactionSuccessful();这一句。
正确的方法是:
由于insert()方法会返回long型数值,这个值是插入成功以后的id(虽然事务尚未提交,但是已经有id了);而如果插入失败,则会返回-1,因此判断返回值即可管理事务。
代码如下:
db.beginTransaction();
try{
if(db.insert(..)==-1){
throw new Exception();
}
db.setTransactionSuccessful();
}finally{
db.endtransaction();
}
db.setTransactionSuccessful();
db.beginTransaction();
try{
db.insert(...);
db.setTransactionSuccessful();
}finally{
db.endtransaction();
}
db.beginTransaction();
try{
db.insert(...);
db.setTransactionSuccessful();
}finally{
db.endtransaction();
}
这样的代码去开启事务,会导致无论是否插入成功,代码一定会执行到db.setTransactionSuccessful();这一句。
正确的方法是:
由于insert()方法会返回long型数值,这个值是插入成功以后的id(虽然事务尚未提交,但是已经有id了);而如果插入失败,则会返回-1,因此判断返回值即可管理事务。
代码如下:
db.beginTransaction();
try{
if(db.insert(..)==-1){
throw new Exception();
}
db.setTransactionSuccessful();
}finally{
db.endtransaction();
}
db.setTransactionSuccessful();
db.beginTransaction();
try{
db.insert(...);
db.setTransactionSuccessful();
}finally{
db.endtransaction();
}
相关文章推荐
- android文字阴影效果(转)
- day2_Android下单元测试相关
- 加密与解密算法
- 《Android进阶》Sqlite的使用
- android -- service
- Android的事件处理2
- android 抓取wifi网卡的数据包
- android hwcomposer
- android apk签名和包名
- android开源项目
- ListView 禁止Item被点击
- Android M 新的运行时权限开发者需要知道的一切
- BroadcastReceiver总结
- android EditText设置
- 配置AndroidStudio
- Android - "cause failed to find target android-14" 问题
- Android 5.1 SurfaceFlinger VSYNC详解
- 安卓统一添加activity切换动画
- Android - 点击可以转动的自定义右下角浮动FABImageButton按钮
- android-studio 安装gradle