Insert Method不插入数据也不会抛出异常 - Android SQLite

时间:2015-01-29 11:07:44

标签: android sqlite android-sqlite

我的应用程序的一种方法应该将数据设置到其数据库中。 我面临的问题是插入方法(由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);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

您需要在setTransactionSuccessful()之前调用endTransaction()来提交更改。否则endTransaction()会回滚更改。

交易的规范模式如下:

beginTransaction();
try {
    db operations...
    setTransactionSuccessful();
}
finally {
    endTransaction();
}

这可确保始终配对开始和结束呼叫。