Android系统。 sqlite更新最后插入的行

时间:2014-08-20 09:11:26

标签: android sqlite

我想更新最后插入的行,但是收到错误:

  

08-20 12:08:23.091:E / AndroidRuntime(13598):android.database.sqlite.SQLiteException:near“ORDER”:语法错误   (代码1):,编译时:UPDATE REVIEW SET json =?在哪里订购   日期DESC LIMIT 1

我的代码:

public int updateDataJSON(Review review) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_JSON, review.getJson());

    return db.update(TABLE_REVIEW, values, " ORDER BY date DESC LIMIT 1", null);
}

2 个答案:

答案 0 :(得分:1)

ORDER BY等仅在SELECT次查询中有效,而非UPDATE次。

请考虑以下事项:

  1. 存储调用insert()时返回的最后插入的行ID:

    long lastInsertRowId = db.insert(...);
    
  2. 在更新中使用rowid

    db.update(TABLE_REVIEW, values, "ROWID=?", new String[] { String.valueOf(lastInsertRowId)2 });
    

答案 1 :(得分:1)

您必须在单独的步骤中阅读最后一个日期:

db.update(..., "date = (SELECT max(date) FROM ReviewTable)", ...);

(如果有多个行具有相同的date值,则会更新所有行。)