Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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
Java sqlite更新一开始只工作一次,然后失败_Java_Android_Database_Sqlite - Fatal编程技术网

Java sqlite更新一开始只工作一次,然后失败

Java sqlite更新一开始只工作一次,然后失败,java,android,database,sqlite,Java,Android,Database,Sqlite,我有一个方法,应该更新表中的一行 但它只工作一次,然后当我想更新第二行或其他行时,它就不工作了 以下是更新方法: @Override public boolean updateRelayItemStatus(int deviceId, String itemDefaultName, int status) { LogClass.logD("start updating '"+itemDefaultName+"'"); SQLiteDatabase sql = db.getWri

我有一个方法,应该更新表中的一行 但它只工作一次,然后当我想更新第二行或其他行时,它就不工作了

以下是更新方法:

@Override
public boolean updateRelayItemStatus(int deviceId, String itemDefaultName, int status) {
    LogClass.logD("start updating '"+itemDefaultName+"'");

    SQLiteDatabase sql = db.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(Database.R_STATUS, status);


    long responseId = sql.update(Database.TABLE_RELAYS, contentValues, Database.R_ID + " =? AND " + Database.R_DEFAULT_NAME + " =?", new String[]{String.valueOf(deviceId), itemDefaultName});

    sql.close();
    LogClass.logD("update relay row for '" + itemDefaultName + "' " +
            " -  '"+deviceId+"' " +
            " -  '"+status+"'  =======   " + (responseId > 0 ? "succeed" : "failed"));
    return responseId > 0;
}
这是表格:

private final String CREATE_RELAYS = "CREATE TABLE " + TABLE_RELAYS + "("
            + R_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + R_DEVICE_ID + " TEXT, "
            + R_DEFAULT_NAME + " TEXT,"
            + R_CUSTOM_NAME + " TEXT,"
            + R_ICON + " INTEGER,"
            + R_TIME + " INTEGER,"
            + R_STATUS + " INTEGER);";

我发现了问题。。。我桌上有两个身份证
其中一个是唯一Id,另一个是另一个表中的设备Id,为了更新,我需要设备Id,但我使用了另一个Id,这就是问题的原因

update()
失败时,您是否在Logcat中看到任何错误?@MichaelDodd no nothing,但是响应变量是0,并且没有发生更新。您不需要
id=?默认的_name=?
as id应该唯一地标识一行(即您应该只需要id=?)。也许它们并不同步。我建议按id从表中获取行,并将列从添加到日志中,以比较id和默认值。\u name.ohhh我使用了错误的id列。。谢谢你提到:D@MikeT