无法更新SQLite上的最后一行

时间:2011-09-04 10:46:36

标签: android sqlite sql-update

public public udpateNoteInfo(String text){
    ContentValues val = new ContentValues();
    val.put(KEY_CONTENT5, text);        

    sqLiteDatabase.update(MYDATABASE_TABLE, val,"ORDER_BY("+KEY_ID+") DESC LIMIT 0,1",  new String[]{text});  
}

我尝试更新SQLite中KEY_CONTENT5列的最后一行,但这是错误的。 我想它在"ORDER_BY("+KEY_ID+") DESC LIMIT 0,1"的错误,但我不知道如何纠正它。如果你知道,请告诉我。谢谢。

ERROR:
09-05 11:47:54.769 E/Database( 4386): Error updating note=Test using UPDATE PERSONAL_TABLE SET note=? WHERE _id = (SELECT max(_id) FROM PERSONAL_TABLE)

活动类:

public void updateNote(String txt) {
        mySQLiteAdapter = new PersonalSQLiteAdapter(this);
        mySQLiteAdapter.openToWrite();
        cursor = mySQLiteAdapter.queueAll();
        if (cursor != null) {   
            mySQLiteAdapter.udpateNoteInfo(txt);
        }
        mySQLiteAdapter.close();
    }

SQLiteAdapter类(非活动):

public void udpateNoteInfo(String text) {
        ContentValues val = new ContentValues();
        val.put(KEY_CONTENT5, text);
        sqLiteDatabase.update(MYDATABASE_TABLE, val, KEY_ID + " = (SELECT max("
                + KEY_ID + ") FROM " + MYDATABASE_TABLE + ")",
                new String[] { text });

    }

4 个答案:

答案 0 :(得分:3)

您无法在更新中下订单。 你可以尝试这样的事情: WHERE id =(SELECT max(id)FROM TABLE)如果你想更新最后一个id,假设你的序列没有被修改。

答案 1 :(得分:2)

public void udpateNoteInfo(String text) {
        ContentValues val = new ContentValues();
        val.put(KEY_CONTENT5, text);
        sqLiteDatabase.update(MYDATABASE_TABLE, val, KEY_ID+" = (SELECT max("+KEY_ID+") FROM "+MYDATABASE_TABLE+")", null);
    }

我的最终答案。

答案 2 :(得分:0)

您可以查询ID,然后更新此行...如果您的key_id值不是唯一的,则需要使用主键列而不是此列...

Cursor cLast = db.query(MYDATABASE_TABLE, [KEY_ID], null, null, null, "ORDER_BY("+KEY_ID+") DESC", "LIMIT 0,1");
if (cLast.moveToFirst()) {
  long lastKey = cLast.getLong(0); // if it's not a long, use the appropriate getter
  sqLiteDatabase.update(MYDATABASE_TABLE, val, "WHERE KEY_ID=?", lastKey);
}

答案 3 :(得分:0)

UPDATE表set col = 1 WHERE id =(SELECT MAX(id)FROM table)