Сбой приложения при обновлении базы данных
В настоящее время я разрабатываю приложение для Android с затмением. У меня возникла проблема при обновлении базы данных. Проблема заключается в сбое приложения при вызове метода updateFlag. Метод updateFlag обновляет только один конкретный столбец только на основе rowId.
Это моя структура базы данных в классе SQLiteAdapter:
public long insert(String answer, String question, String hint, String flag, String level){
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_ANSWER, answer);
contentValues.put(KEY_QUESTION, question);
contentValues.put(KEY_HINT, hint);
contentValues.put(KEY_FLAG, flag);
contentValues.put(KEY_LEVEL, level);
return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues);
}
Это метод обновления в классе SQLiteAdapter:
public void updateFlag(long rowId)
{
ContentValues args = new ContentValues();
args.put(KEY_FLAG, "1");
sqLiteDatabase.update(MYDATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null);
}
И вот как я вызываю метод updateFlag в другом классе:
mySQLiteAdapterListener2 = new SQLiteAdapter(this);
mySQLiteAdapterListener2.openToWrite();
long idListener = Long.parseLong(getId);
mySQLiteAdapterListener2.updateFlag(idListener);
mySQLiteAdapterListener2.close();
Что не так с моим кодом? Кто-нибудь знает, как правильно обновить один конкретный столбец на основе rowId?
2 ответа
Метод обновления SQLiteDatabase принимает четыре аргумента:
database.update(String table_name, ContentValues values, String selection, String[] selectionArgs);
Итак, ваш запрос должен быть таким же, как в приведенном ниже методе updateFlag. Замените ваш метод updateFlag этим и попробуйте это.
public void updateFlag(long rowId)
{
ContentValues args = new ContentValues();
args.put(KEY_FLAG, "1");
sqLiteDatabase.update(MYDATABASE_TABLE, args, KEY_ROWID + "=?", new String[]{rowId+""});
}
Попробуй это:
sqLiteDatabase.update(MYDATABASE_TABLE, args, KEY_ROWID + "=?", new String[] {rowId});
Последние параметры, если для передачи значений, которые заменят "?".
Это предполагает, что у вас есть проблемы с вашим обновлением. Вам нужно опубликовать трассировку стека, чтобы мы могли видеть, где происходит сбой приложения.