0
所以我有一个数据库,SQLiteDatabase db
我写在我的经理类一对夫妇的私有方法,将通过一个公共方法被调用:删除VS execSQL命令机器人
public void updateData (MakeabilityModel newData){
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
try {
reWriteSVTable(db, list);
db.setTransactionSuccessful();
} catch (Exception e){
//TODO through rollback message?
e.printStackTrace();
} finally {
db.endTransaction();
}
}
//Private Methods
private void clearTable(SQLiteDatabase db, String table){
db.delete(table, null, null);
}
private void reWriteSVTable(SQLiteDatabase db, List<MakeabilityLens> lenses){
clearTable(db, singleVision);
ContentValues cv;
for(int i=0; i<lenses.size(); i++){
cv = new ContentValues();
cv.put(colScreenID, hsID);
cv.put(colIconID, id);
cv.put(colRank, hsTotal);
db.insert(isLookUp, colID, cv);
}
}
我的问题是这样的..我想以便能够将sql异常返回到公共方法,以便在出现异常时终止事务并回滚所有数据。
看起来使用delete()和insert()方法比清除execSQL()但不抛出sqlExceptions。另一方面execSQL()呢?我是否需要使用execSQL,以及如何确保它应引发任何私有方法中的异常,以便将其捕获并将其回滚到私有方法中