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