事务Transaction()详解(以及ContentValue的注意点)

来源:互联网 发布:淘宝网app 电脑版下载 编辑:程序博客网 时间:2024/06/04 21:25

概念:保证所有sql语句,要没一起成功,要么 一起失败 ;

 设置 try语句块内部代码,取决于db.setTransactionSuccessful();如果执行到这条语句,那么会通过db.endTransaction()提交数据,如果中途发生意外,则不会提交数据;

案列:典型的案列---转账案列,一个扣钱,一个加钱,如果断电或者程序失败,那么都操作失败不会执行成功;

public void transaction(View view){    SQLiteDatabase sqLiteDatabase=myOpenHelper.getWritableDatabase();    try{        //开启事务        sqLiteDatabase.beginTransaction();        ContentValues values=new ContentValues();        values.put("salary","12000");        sqLiteDatabase.update("person", values, "name =?", new String[]{"小智"});        //记得做values修改操作的时候,一定要clear()之前的数据,因为values会将上一个数据带到下一个      数据内部        values.clear();        values.put("salary", "2300");        sqLiteDatabase.update("paerson",values,"name=?",new String[]{"小明"});
         //设置 事务执行成功        sqLiteDatabase.setTransactionSuccessful();    }    finally {
         //关闭事务 ,同时提交 ,如果设置事务执行成功,那么sql语句就生效了,如果 设置事务执行成功这条语句未执行,那么sql语句不会生效        sqLiteDatabase.endTransaction();    }


0 0
原创粉丝点击