Android Java SQLite не обновляется? - PullRequest
0 голосов
/ 10 ноября 2019

Я схожу с ума здесь. Я пытался обновить один столбец в одной строке в моей базе данных SQLite, но это просто не происходит независимо от того, что я пытаюсь. Значение никогда не обновляется, и в моем журнале нет исключений.

Приведенный ниже кодмог бы суммировать мою проблему лучше всего. функция updateLatestMessage() является частью класса контроллера базы данных.

  public void updateLatestMessage(int messageID, int chatID){
    Log.d("DB", "message ID =" + messageID); //example output = 125
    Log.d("DB", "chat ID =" + chatID); //example output = 2

    SQLiteDatabase db = this.getWritableDatabase();

    try {
        ContentValues cv = new ContentValues();
        cv.put("latest_message_id", messageID);
        db.update("chat", cv, "chat_id = ?" + chatID, null);
        db.close();
        //db.update(tableChat.TABLE_NAME, cv, tableChat.getChatId() + " = ?", new String[]{String.valueOf(chatID)}); // tried this before didn't work either


    }
    catch(Exception e) {
        Log.d("DB", "Error: "+e.toString());
    }

}

текущее последнее сообщение имеет идентификатор 5

        myDB.chat.updateLatestMessage((int) messageID, globalChatID);//calling the above DB update code

после запуска этого кода последнее сообщение все еще имеет идентификатор5 вместо 125

Я ожидаю обновления messageID внутри столбца latest_message_id внутри моей уже существующей строки чата.

1 Ответ

1 голос
/ 10 ноября 2019

Если имя таблицы - "chat", имя столбца в предложении WHERE - "chat_id", а аргумент предложения WHERE - chatID, то рекомендуемый способ обновления:this:

int result = db.update("chat", cv, "chat_id = ?", new String[]{String.ValueOf(chatID)});

Проверьте значение result после выписки. Если его значение больше 0, тогда обновление прошло успешно.

...