это очень странно. Я уже давно пытаюсь решить эту проблему. Я пытаюсь сделать что-то очень простое, обновить идентификатор сообщения в существующей записи таблицы чата.
проверить код
public int updateLatestMessage(int messageID, int chatID){
Log.d("DB", "messageid =" + messageID); // messageID = 175
Log.d("DB", "chatid =" + chatID); // chatID = 5
testUpdate(chatID); // Testing if this Updates and it does update
SQLiteDatabase db = this.getWritableDatabase();
try {
ContentValues cv = new ContentValues();
cv.put("last_message_id", messageID);
int result = db.update("chat", cv, "chat_id = ?", new String[]{String.valueOf(chatID)});
db.close();
return result;
}
catch(Exception e) {
Log.d("DB", "Error: "+e.toString());
return 0;
}
}
функция возвращает 1, что означает, что все обновлено правильно. Но идентификатор сообщения по-прежнему равен 10, как это было раньше, вместо 175.
в функции обновления, я запускаю другую функцию обновления для проверки работоспособности, которая выглядит следующим образом:
public void testUpdate(int chatID){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("chat_description", "Will this String Update");
db.update("chat", cv, "chat_id = ?", new String[]{String.valueOf(chatID)});
db.close();
return;
}
теперь это корректно обновляет строку «Будет ли это обновление строки».
Насколько я могу судить, единственное отличие состоит в том, что идентификатор сообщения, которое я пытаюсь обновить и не могу сделать, является целым числом. При успешном обновлении testUpdate с обновлением "chat_description" отображается строка.
Чего мне не хватает?
Ошибка должна быть в примере кода, который я предоставил, потому что я регистрирую результат непосредственно до и после функций обновления.