だから私はデータベースを持っています。SQLiteDatabase db
パブリックメソッドによって呼び出されるマネージャークラスにいくつかのプライベートメソッドを書いています:
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 を使用する必要がありますか? また、プライベート メソッドのいずれかで例外がスローされた場合に、それをキャッチしてプライベート メソッドでロールバックすることを保証するにはどうすればよいですか?