Android开发之使用事务
2016-03-10 09:56
253 查看
代码分析:
首先调用SQLiteDatabase的beginTransaction()方法来开启一个事务,然后在一个异常捕获的代码块去执行具体的数据库操作,当所有的操作都完成后,调用 setTransactionSuccessful()表示事务已经执行成功了, 最后在finally代码块中调用endTransaction()来结束事务,在删除旧数据的操作过程完成后手动抛出一个NullPointerException,这样添加数据的代码就执行不到了不过由于事务的存在,中途出现异常导致事务的失败,旧的数据删不掉,删去手动抛出异常的代码,数据就会更新
看这一篇前,建议看看上一篇
首先调用SQLiteDatabase的beginTransaction()方法来开启一个事务,然后在一个异常捕获的代码块去执行具体的数据库操作,当所有的操作都完成后,调用 setTransactionSuccessful()表示事务已经执行成功了, 最后在finally代码块中调用endTransaction()来结束事务,在删除旧数据的操作过程完成后手动抛出一个NullPointerException,这样添加数据的代码就执行不到了不过由于事务的存在,中途出现异常导致事务的失败,旧的数据删不掉,删去手动抛出异常的代码,数据就会更新
看这一篇前,建议看看上一篇
replaceButton.setOnClickListener(new OnClickListener(){ public void onClick(View v){ SQLiteDatabase db=dbHelper.getWritableDatabase(); db.beginTransaction(); // 开启事务 try{ db.delete("Book", null, null); if(true){ //在这里手动抛出一个异常,让事务失败 throw new NullPointerException(); } ContentValues values=new ContentValues(); values.put("name", "Game of Thrones"); values.put("author", "George Martin"); values.put("pages", "720"); values.put("price", "20.87"); db.insert("Book", null, values); db.setTransactionSuccessful(); //事务已经执行成功 }catch(Exception e){ e.printStackTrace(); }finally{ db.endTransaction(); //结束事务 } } });
相关文章推荐
- 记录AndroidStudio一些简单操作
- Android中的一些基础知识(一)
- android城市列表A-Z排序
- 2_面向对象的六大原则
- Android Studio xutil3.0的Post请求 分享
- Android 知识
- Java(Android)线程池
- Android 数据库管理— — —删除数据
- Android天天数钱游戏项目源码
- Android天天数钱游戏项目源码
- Android 事件分发机制
- Android 应用层View绘制流程
- Android结束进程的方法详解
- Android 数据库管理— — —更新数据
- Android Studio 新建drawable-hdpi、drawable-mdpi等
- Android Couldn't load BaiduMapSDK
- Android防止重复点击的解决办法
- Android 数据库管理— — —添加数据
- LeakCanary Android 和 Java 内存泄露检测 ,OOM检测
- android开发时gen和bin目录的SVN管理(转)