开发者

Android SQLite Update not working

开发者 https://www.devze.com 2023-02-23 04:13 出处:网络
I am trying to update one column for any number of rows. Here is the function: public void setAwardsSyncComplete(String[] ids) {

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 somethi开发者_如何学Pythonng very simple here?

Thanks.


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


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


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()


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

0

精彩评论

暂无评论...
验证码 换一张
取 消