j'ai donc une base de données, SQLiteDatabase db
je suis en train d'écrire un couple des méthodes privées dans ma classe de gestionnaire qui sera appelé par une méthode publique:supprimer vs execSQL commandes android
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);
}
}
Ma question est .. je veux pour être en mesure de jeter des exceptions sql retour à la méthode publique de sorte que s'il y a une exception, il va tuer la transaction et annuler toutes les données ..
il semble que l'utilisation des méthodes delete() et insert() sont plus propres que execSQL() mais ne lance pas sqlExceptions. execSQL() d'autre part fait? ai-je besoin d'utiliser execSQL et comment puis-je m'assurer que s'il lance une exception dans l'une des méthodes privées qu'il l'attrape et l'annule dans la méthode privée