我的应用程序的一种方法应该将数据设置到其数据库中。 我面临的问题是插入方法(由SQLite Android Class提供)不会在最后插入任何数据,也不会抛出异常。
以下是方法的代码:
public void setGasto(int idRubrica, String estabelecimento, float valor){
SQLiteDatabase db2 = this.getWritableDatabase();
ContentValues values = new ContentValues(4);
values.put("DATA", System.currentTimeMillis());
values.put("VALOR",valor);
values.put("ESTABELECIMENTO", estabelecimento);
values.put("ID_RUBRICA",idRubrica);
db2.beginTransaction();
try{
db2.insertOrThrow("GASTOS",null,values);
} catch (Exception e){
System.out.println(e);
}
db2.endTransaction();
db2.close();
}
我被困住了。
更新
我认为这个问题存在于我调用它的方式中。 我从一个设置为Alert Dialog Builder的内部方法调用它。
public void dismiss(AlertDialog.Builder builder, final SQLiteDatabase db2){
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
db.setGasto(db2, idRubrica,estabelecimento,valor);
}
});
}
答案 0 :(得分:0)
您需要在setTransactionSuccessful()
之前调用endTransaction()
来提交更改。否则endTransaction()
会回滚更改。
交易的规范模式如下:
beginTransaction();
try {
db operations...
setTransactionSuccessful();
}
finally {
endTransaction();
}
这可确保始终配对开始和结束呼叫。