Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite更新不工作_Android_Sqlite - Fatal编程技术网

Android SQLite更新不工作

Android SQLite更新不工作,android,sqlite,Android,Sqlite,我正在尝试为任意数量的行更新一列 以下是函数: public void setAwardsSyncComplete(String[] ids) { String inArray = StringUtils.separateCommas(ids); db.beginTransaction(); try { ContentValues contentValues = new ContentValues(); contentValues.pu

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

以下是函数:

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

我是否忽略了一些非常简单的事情


谢谢。

sqlite表中没有显式布尔类型? 您试图更新的列的数据类型是什么


您需要调用db.setTransactionSuccusful()

您需要在
db.update
之后调用
db.setTransactionSuccusful()
,否则在调用
endTransaction()

时任何更改都将回滚。当您使用事务时,您需要调用db.setTransactionSuccessful();在try子句的末尾。否则,更新将回滚

希望这有帮助


菲尔·莱洛(Phil Lello)

我认为你的更新有问题

您需要循环数组并逐个更新

    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
问候