我正在做数据库同步.在sql server和sqlite之间下载数据.如果在sqlite中更新/插入记录时存在某些情况,则互联网连接速度慢或丢失然后需要回滚.这可能在此代码中或如何在此处使用事务处理.
public void insertTableRecords(String strTableName, String[] strToFields, String[] strValues){
DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(DownlaodTableActivity.this);
dbAdapter.openDataBase();
ContentValues initialValues = new ContentValues();
for(int i=0 ;i<strToFields.length;i++){
initialValues.put(strToFields[i],strValues[i]);
}
long n = dbAdapter.insertRecordsInDB(strTableName, null, initialValues);
System.out.println( " -- inserted status : --- " + n);
}
Run Code Online (Sandbox Code Playgroud)
请帮我.
提前致谢...
Jus*_*yul 39
这是在SQLite中使用事务的简短示例(db是以下的SQLiteDatabase实例):
try {
db.beginTransaction();
// your sql stuff
db.setTransactionSuccessful();
} catch(SQLException e) {
// do some error handling
} finally {
db.endTransaction();
}
Run Code Online (Sandbox Code Playgroud)
请注意,重要的是你选择用抛出和异常替换"//你的sql东西"的任何方法.使用insertOrThrow()或者如果您需要更灵活的SQLiteStatement实例(它们的.execute方法总是会在出错时抛出异常).
请注意,您不需要显式回滚.如果在没有.setTransactionSuccessful()的情况下调用db.endTransaction(),它将自动回滚.
只记得在最后一次抛出SQLException方法之后总是把setTransactionSuccessful放到:)
您可以使用另一个catch块轻松扩展它,以捕获网络超时的异常.