为了账号安全,请及时绑定邮箱和手机立即绑定

Android数据库事务

Android数据库事务

婷婷同学_ 2019-08-16 14:14:01
Android数据库事务我创建了一个数据库。我想做交易。SaveCustomer()包含多个语句,以便Customer, CustomerControl, Profile, Payment在那时将记录插入表中。当用户调用 SaveCustomer()方法时,该数据将转到这4个表。所以我该如何进行交易?如果一个表插入失败,则需要回滚所有内容。例如,当第3个表插入记录时出现错误,那么还需要回滚前两个表的插入记录。看我的代码:public void saveCustomer(){     DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderKeyActivity.this);     dbAdapter.openDataBase();     ContentValues initialValues = new ContentValues();     initialValues.put("CustomerName",customer.getName());     initialValues.put("Address",customer.getAddress());     initialValues.put("CustomerPID",strPID);     initialValues.put("Date",strDateOnly);     long n = dbAdapter.insertRecordsInDB("Customer", null, initialValues);}同样其他声明也在那里。DBAdpter代码是:public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues) {     long n =-1;     try {         myDataBase.beginTransaction();         n = myDataBase.insert(tableName, nullColumnHack, initialValues);         myDataBase.endTransaction();         myDataBase.setTransactionSuccessful();     } catch (Exception e) {         // how to do the rollback          e.printStackTrace();     }     return n;}这是完整的代码:public class DBAdapter extends SQLiteOpenHelper {     private static String DB_PATH = "/data/data/com.my.controller/databases/";     private static final String DB_NAME = "customer";     private SQLiteDatabase myDataBase;     private final Context myContext;     private static DBAdapter mDBConnection;     private DBAdapter(Context context) {         super(context, DB_NAME, null, 1);         this.myContext = context;         DB_PATH = "/data/data/"                 + context.getApplicationContext().getPackageName()                 + "/databases/";         // The Android's default system path of your application database is         // "/data/data/mypackagename/databases/"     }
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 553 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信