Как обновить одно поле в определенной строке с помощью sqlite в android
Я разрабатываю базу данных в Sqlite. Я создал таблицу схема такова
Sms_Address
,Sms_Body
,Status_Msg
Начальное состояние сообщения-0. Я обновляю статус до 1 с помощью setStatus()
функция в базе данных. Но статус всех строк обновляется. Я хочу обновить только одно поле с именем as Status_Msg
проверка по флажку. То
setStatus()
функция приведена ниже:public String setStatus(){ SQLiteDatabase sqldb = this.getWritableDatabase(); ContentValues values = new ContentValues(); if (Status_Msg.equals(Status_Msg)) { values.put(Status_Msg, 1); sqldb.update(DB_Table1, values, "status = 0", null); } System.out.println("" + Status_Msg); sqldb.close(); return Status_Msg; }
Я отображаю данные в базе данных с помощью
showStatusChangedData()
функция. Управление перемещается правильно в этой функции. Эта функция не показывает сообщения в listview пожалуйста, проверьте эти две функции. То
showStatusChangedData()
функция приведена ниже:public List<Message> showStatusChangedData(){ SQLiteDatabase sqldb = getWritableDatabase(); List<Message> list = new ArrayList<>(); String select_query = "SELECT * FROM " + DB_Table1 + " where status = 1"; Cursor cursor = sqldb.rawQuery(select_query,null); if (cursor.moveToFirst()) { do { Message msg = new Message(); msg.setmAddress(cursor.getString(0)); msg.setmBody(cursor.getString(1)); msg.setmStatus(cursor.getString(2)); list.add(msg); } while (cursor.moveToNext()); } return list; }
Что я уже пробовал:
Я попробовал выполнить следующий запрос
sqldb.update(DB_Table1, values,Sms_Address +"="+ Status_Msg,null);
Но это не работает.
Richard MacCutchan
Что "это не работает" значит? И какого результата вы ожидаете от этого заявления if (Status_Msg.equals(Status_Msg))
?
Member 12299159
Статус сообщения равен 1, а затем обновите Статус сообщения.
Member 12299159
Я решил вчерашнюю проблему. Это новая проблема, с которой я столкнулся. Пожалуйста, помогите мне решить эту проблему. Я обновил вопрос.
Richard MacCutchan
Добавьте некоторый код для проверки значений, возвращаемых при вызове некоторого метода. Не думайте, что каждый раз вы будете получать хороший результат. Курсор, возвращаемый из инструкции SELECT, может не содержать никаких элементов. Вы можете быстро проверить это с помощью своего отладчика.
Member 12299159
Я проверяю с помощью отладчика запрос обновления обновляет значение от 0 до 1 и
Выберите запрос, не содержащий никакого элемента.
Member 12299159
Как я создаю новый метод setStatus ()?
Как я создаю запрос обновления?
Member 12299159
Я решил вчерашнюю проблему. Я обновил вопрос.Пожалуйста, проверьте это и помогите мне решить эту проблему.
David Crow
Не имеет отношения ни к одной из проблем, но почему это так showStatusChangedData()
зовущий getWritableDatabase()
вместо getReadableDatabase()
?
Код в системе setStatus()
функция собирается изменить все Status_msg
столбцы 1
для тех рядов, чьи status
столбец равен 0
Возможно, именно поэтому вы обновляете более одной строки .