SQLite事务学习记录
来源:互联网 发布:学编程要多少钱 编辑:程序博客网 时间:2024/06/06 01:36
直接上代码,下面是我做的测试
ContentValues values=new ContentValues();String[] names={"张三","李四","王五","马六","冯七","王八"};//DataBaseHelper helper=new DataBaseHelper(DataBaseActivity.this, "test_mars_db");if(db==null){db=openOrCreateDatabase("test_mars_db", MODE_WORLD_WRITEABLE, null);}db.beginTransaction();//开户事务try {for(String name:names){values.put("name", name);values.put("address", "花园路");db.insert("user", null, values);Log.d(TAG, "插入:"+values.toString());}values.put("name", "test");//db.insert("users", null, values);////1//db.execSQL("update user set n='1' where id=2");////2db.setTransactionSuccessful();//设置事务标志为true} catch (Exception e) {e.printStackTrace();}finally{ //为何要加try...catch //因为添加了db.setTransactionSuccessful(),若execSQL中出现问题 //则不会执行db.endTransaction() db.endTransaction(); //结束事务,有2种情况:commit, rollback}db.close();
通过上面的代码发现了一点问题,建好数据库中只有表user,当将红色标记1的代码注释掉,即执行红色标记2的代码,事务会回滚,Logcat中打出一串警告,提示没有名称为"n"的列。但是反过来,即注释掉2的代码,执行1的代码,也是就是往一个不存在的表中插数据,这时候程序会报错,但事务却没有回滚,依然向user表中插入了数据。搞不懂是什么原因,哪位大侠清楚,指教一下。
- SQLite事务学习记录
- Android 学习记录-SQLite
- Spring事务学习记录
- SQLite学习手册(数据库和事务)
- SQLite学习笔记(12)-事务(1)
- Androidx学习笔记(21)-- SQLite 事务
- SQLite学习手册(数据库和事务)
- SQLite学习手册(数据库和事务)
- SQLite学习手册(数据库和事务)
- javaWeb学习记录:数据库:事务
- SQLITE事务
- sqlite事务
- sqlite事务
- SQLite事务
- SQLite事务
- SQLite 事务
- javaWeb学习记录:BaseServlet 与 service事务
- redis学习记录05-redis事务
- [leetcode] Remove Duplicates from Sorted List II
- oracle数据库查看修改字符集问题
- 存储过程返回游标
- Yii - relations数据关联中的统计功能
- Activity生命周期图
- SQLite事务学习记录
- zoj 1563 Pearls 动态规划
- python for语句
- yii发表文章之添加&修改
- jquery ajax 实现批量删除
- Android各层推荐开发书籍及参考资料
- 两个数相乘,小数点后的位数没有限制
- Android中App安装位置详解
- Linq实现DataTable行转列效果