Android Таблица обновлений SQLite без возврата - PullRequest
0 голосов
/ 26 апреля 2020
  • При первой вставке данных это работает
  • Но когда я обновляю запрос, не работает

Здесь мой код, что я пытаюсь сделать.

fun updateData(mData: Data) {
            if (!databaseOpen) {
                database = INSTANCE.writableDatabase
                databaseOpen = true
            }
  val values = ContentValues()

values.put(DatabaseConstan.USER_ID, mData.userId)
values.put(DatabaseConstan.ABOUT, mData.userInfo.about)


return database.update(DatabaseConstan.DATABASE_TABEL, values, "${DatabaseConstan.USER_ID}=${mData.userId}", null);

Но этот метод работает

 return  database.execSQL("UPDATE data SET userId=${mData.userId} WHERE id='1'");

Вот команда создания таблицы

 val QUERY_CREATE = "CREATE TABLE  $DATABASE_TABEL ($ROW_ID INTEGER PRIMARY KEY AUTOINCREMENT, $USER_ID INTEGER , $ABOUT TEXT)"

Я смущен и пытается, но не понимает

1 Ответ

0 голосов
/ 26 апреля 2020

Объект mData содержит новые значения 3 столбцов, которые вы хотите заменить старыми значениями. Таким образом, mData.userId содержит новый userId, которого нет в таблице. Это делает предложение WHERE оператора UPDATE, которое является 3d-аргументом метода update(): "${DatabaseConstan.USER_ID}=${mData.userId}", чтобы ничего не возвращать.

Таким образом, вместо ${mData.userId} вы должны использовать исходное значение столбца, которое необходимо сохранить в такой переменной, как currentUserId, и изменить на:

"${DatabaseConstan.USER_ID}=$currentUserId"

Или, возможно, вы хотите установите предложение WHERE, чтобы выполнять поиск по id, а не по userId и предполагая, что объект mData содержит также id:

"${DatabaseConstan.ID}=${mData.Id}"

Измените имена переменных на ваши настоящие имена.

...