3

I am trying to update one column for any number of rows.

Here is the function:

public void setAwardsSyncComplete(String[] ids) {

    String inArray = StringUtils.separateCommas(ids);
    db.beginTransaction();

    try {
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_SYNCED, true);

        int rowsAffected = db.update(TABLE, contentValues, COL_ID + " IN (" + inArray + ")", null);

    } catch (Exception e) {

        DebugLog.e("Error in transaction", e.toString());
    } finally {

        db.endTransaction();
    }
}

What is strange is that the rowsAffected returns correctly (i.e. rowsAffected > 0), but the column values remain null.

Am I overlooking something very simple here?

Thanks.

4 Answers 4

8

As you're using transactions, you need to call db.setTransactionSuccessful(); at the end of the try clause. Without this, the update gets rolled back.

See SQLiteDatabase.beginTransaction

Hope this helps,

Phil Lello

Sign up to request clarification or add additional context in comments.

Comments

2

You need to call db.setTransactionSuccussful() after db.update otherwise any changes will be rolled back when you call endTransaction().

Comments

1

there's no explicit boolean type in sqlite tables? what data type is the COL_SYNED column you are trying to update?

and you will need to call db.setTransactionSuccussful()

Comments

0

I think there is a problem on your update..

You need to loop your array and update each one by one..

    private int _rowsAffected;

    foreach (var a in inArray)
    {

    _rowsAffected= db.update(TABLE, contentValues, COL_ID + " = (" + a +")", null);

    }

    db.Commit();
    db.setTransactionSuccussful(); 


if(_rowsAffected > 0)
//Success

Regards

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.