android下的数据库事物: Transaction

public   class   TestTransaction   extends   AndroidTestCase {

    public   void   testTransaction()   throws   Exception{
             
           
               //拿到数据库
            PersonDBOpenHelp   herper=   new   PersonDBOpenHelp(getContext());
            SQLiteDatabase db = herper.getWritableDatabase();
            
               //开启数据库事物
            db.beginTransaction();
            
               try {
                  db.execSQL(   "update person set money=money-100  where name='zhangsan'" );
                  
                     //System.out.println(1/0);
                  db.execSQL(   "update person set money=money+100  where name='zhangsan0'" );
                  
                  db.setTransactionSuccessful();      //如果没有标记数据库事物成功,数据会回滚
            }   finally {
                  
                  db.endTransaction();     //关闭数据库事物
            }
            
            db.close();
            
      }
      
      
}



------------------------------------------------------------------------------------------------


在内容提供者中开启事物:


/**
       * 内容提供者中开启事物
       *   @throws   Exception
       */
       public   void   testBatch()   throws   Exception {
            ContentResolver resolver = getContext().getContentResolver();
            ArrayList<ContentProviderOperation> list =   new   ArrayList<ContentProviderOperation>();
            
            ContentProviderOperation operation1 = ContentProviderOperation.newInsert( rawContactsUri )
                        .withValue(   "_id" ,   null )
                        .build();
            
            ContentProviderOperation operation2 = ContentProviderOperation.newInsert( dataUri )
                        .withValueBackReference(   "raw_contact_id" , 0)         // 把同组第一个操作的结果作为值
                        .withValue(   "mimetype" ,   "vnd.android.cursor.item/name"   )
                        .withValue(   "data1" ,   "CR" )
                        .build();
            
            ContentProviderOperation operation3 = ContentProviderOperation.newInsert( dataUri )
                        .withValueBackReference(   "raw_contact_id" , 0)    
                        .withValue(   "mimetype" ,   "vnd.android.cursor.item/phone_v2"   )
                        .withValue(   "data1" ,   "131999888888" )
                        .build();
            
            ContentProviderOperation operation4 = ContentProviderOperation.newInsert( dataUri )
                        .withValueBackReference(   "raw_contact_id" , 0)    
                        .withValue(   "mimetype" ,   "vnd.android.cursor.item/email_v2"   )
                        .withValue(   "data1" ,   "cr@hotmail.com" )
                        .build();
            
            list.add(operation1);
            list.add(operation2);
            list.add(operation3);
            list.add(operation4);
            
            resolver.applyBatch(   "com.android.contacts" , list);
      }

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值