Android SQLite更新无法正常工作

时间:2011-04-07 02:18:23

标签: android sqlite

我正在尝试为任意数量的行更新一列。

这是功能:

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

奇怪的是rowsAffected正确返回(即rowsAffected> 0),但列值保持 null

我在这里忽略了一些非常简单的事情吗?

感谢。

4 个答案:

答案 0 :(得分:8)

在使用事务时,需要调用db.setTransactionSuccessful();在try子句的末尾。如果没有这个,更新将被回滚。

请参阅SQLiteDatabase.beginTransaction

希望这有帮助,

Phil Lello

答案 1 :(得分:2)

您需要在db.setTransactionSuccussful()之后致电db.update,否则当您致电endTransaction()时,任何更改都会被回滚。

答案 2 :(得分:1)

sqlite表中没有明确的布尔类型? 您要更新的COL_SYNED列是什么数据类型?

您将需要调用db.setTransactionSuccussful()

答案 3 :(得分:0)

我认为您的更新存在问题..

你需要循环你的数组并逐个更新..

    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

此致