У меня есть код, который загружает набор данных (элемент и значение) в паре. Значение может меняться со временем, поэтому в моем коде есть функция обновления. Проблема в том, что mDb.update ВСЕГДА выдает ошибку, даже после первого успешного выполнения кода и создания таблицы (я знаю это, потому что значения появляются позже в приложении), также имена [c] - «Android» :
android.database.sqlite.SQLiteException: нет такого столбца: Android: при компиляции: UPDATE ThemeFoving SET Favorites =? ГДЕ Имя = Android
Что меня сбивает с толку, так это то, что код ищет столбец с именем Android, а не столбец KEY_NAME ... может кто-нибудь пролить свет?
public void updateFavoritesValue(String[] names, String[] values) {
int c = 0;
while (c< names.length) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_FAVORITES_VALUE, values[c]);
try {
mDb.update(TABLE_THEME_FAVORITES, initialValues, KEY_NAME + "=" + names[c], null);
// TODO this always flags exception :(
} catch (Exception e) { // Table isn't populated yet, must insert new row
initialValues.put(KEY_NAME, names[c]);
initialValues.put(KEY_USER_FAVORITE, "No");
mDb.insert(TABLE_THEME_FAVORITES, null, initialValues);
}
c++;
}
}
Мой код создания таблицы на всякий случай
public static final String KEY_NAME = "Name";
private static final String TABLE_THEME_FAVORITES = "ThemeFavorites";
public static final String KEY_FAVORITES_VALUE = "Favorites";
public static final String KEY_USER_FAVORITE = "UserFavorite";
private static final String DATABASE_CREATE_THEME_FAVORITES = "create table " + TABLE_THEME_FAVORITES + " ("
+ KEY_ROWID + " integer primary key autoincrement, "
+ KEY_NAME + " text not null, "
+ KEY_USER_FAVORITE + " text not null, "
+ KEY_FAVORITES_VALUE + " text not null);";