Не удается обновить последнюю строку на SQLite - PullRequest
0 голосов
/ 04 сентября 2011
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});  
}

Я пытаюсь обновить последнюю строку столбца KEY_CONTENT5 в моем SQLite, но это ошибка.Я думаю, его ошибка в "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 ]

3 голосов
/ 04 сентября 2011

Вы не можете разместить заказ в обновлении. Вы можете попробовать что-то вроде этого: WHERE ID = (ВЫБЕРИТЕ max (id) FROM TABLE), если вы хотите обновить последний идентификатор, при условии, что ваши последовательности не изменены.

2 голосов
/ 05 сентября 2011
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);
    }

Мой окончательный ответ.

0 голосов
/ 30 апреля 2016

ОБНОВЛЕНИЕ таблицы установлено col = 1 ГДЕ id = (ВЫБЕРИТЕ МАКС (id) ИЗ таблицы)

0 голосов
/ 04 сентября 2011

Вы можете запросить идентификатор, а затем обновить эту строку ... если значения 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...