【问题标题】:Android. sqlite update last inserte row安卓。 sqlite 更新最后插入行
【发布时间】:2014-08-20 17:26:12
【问题描述】:

我想更新最后插入的行,但出现错误:

08-20 12:08:23.091:E/AndroidRuntime(13598):android.database.sqlite.SQLiteException:靠近“ORDER”:语法错误 (代码 1):,编译时:UPDATE REVIEW SET json=?订购地点 日期 DESC 限制 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);
}

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

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

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

    (如果有多行具有相同的date 值,这将更新所有行。)

    【讨论】:

      【解决方案2】:

      ORDER BY 等仅在SELECT 查询中有效,在UPDATEs 中无效。

      考虑以下几点:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-21
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        相关资源
        最近更新 更多