データ(アイテムと値)のペアをダウンロードするコードがあります。値は時間の経過とともに変更されるため、コード内に更新機能があります。問題は、mDb.updateは、コードが正常に実行されてテーブルが作成された後でも(常に値がアプリケーションに表示されるため)、[c]の名前が "Android"の場合でも、 :SQLの一貫したエラースローエラー
android.database.sqlite.SQLiteException:いいえそのような列:Android:コンパイル中:UPDATE ThemeFavorites SET Favorites =?私をバッフル何名=アンドロイド
が、それはコードではなくKEY_NAME欄より、アンドロイドという名前の列を探して表示されていることであるWHERE ...誰もがいくつかの光を当てることができますか?
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);";
を照会SQLで文字列を区切るために必要
UPDATE ThemeFavorites SET Favorites=? WHERE Name='Android'
すべきではない!...おかげで、私はそれがそのような愚かな何かを知っていました。私はそれを理解できないほど私を殺していた。 – easycheese