Android数据存储SQLite的事务操做

          使用SQLiteDatabase的beginTransaction()方法能够开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,若是程序执行到endTransaction()以前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,若是没有调用setTransactionSuccessful() 方法则回滚事务。sql

        下面是一个例子:spa

/**事务

 * 保存连载更新的最大章节数get

 *it

 * @param bookIdio

 * @param bookChapterTotalNumtable

 */程序

public void saveBookChapterTotalNum(String bookId, int bookChapterTotalNum) {方法

 synchronized (MyOpenHelper.databaseLock) {db

  SQLiteDatabase db = null;

  try {

   UserInfo userInfo = UserManager.INSTANCE.getUserInfo();

   String username = userInfo.getUsername();

   if (username == null || "".equals(username)) {

    username = MyOpenHelper.AdminUser;

   }

   db = MyOpenHelper.getInstance().getWritableDatabase();

   db.beginTransaction();

   try {

    if (isHave(db, bookId, username)) {

     String sql = "UPDATE "

       + tableName

       + " SET bookChapterTotalNum=? WHERE bookId=? and (username=? or username='"

       + MyOpenHelper.AdminUser + "')";

     Object[] bindArgs = { bookChapterTotalNum, bookId,

       username };

     db.execSQL(sql, bindArgs);

    }

    db.setTransactionSuccessful();

   } catch (Exception e) {

    e.printStackTrace();

   } finally {

    db.endTransaction();

   }

  } catch (Exception e) {

   e.printStackTrace();

  } finally {

   closeDB(db);

  }

 }

}

相关文章
相关标签/搜索