sean
sean

Reputation: 727

SQLite Transaction Fail

i am working on sqlite insertion using contentvalues with transaction . The following code does not generate any exception however the data is not inserted.

Did i miss somethings ? Thanks.

public boolean addRecord(Rec rec) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.beginTransaction();

    ContentValues values = new ContentValues();
    values.put(KEY_ID, rec.get());

    // Inserting Row
    try {
        db.insertOrThrow(TABLE_RECORDS, null, values);
    } catch (SQLException e) {

        e.printStackTrace();
    }  
db.endTransaction();
    db.close();
    return true;
}

Upvotes: 0

Views: 1115

Answers (1)

CL.
CL.

Reputation: 180050

After calling beginTransaction, you must call setTransactionSuccessful to ensure that the transaction gets committed. Without that call, any changes in the transaction are rolled back.

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

This particular construction ensures that any exception in the actual database code will result in an rollback.

(If you get an exception, it is a bad idea to just swallow it; the entire function must fail.)

Upvotes: 3

Related Questions