Android SQL更新一致抛出错误
我有代码可以下载一组成对的数据(项和值)。该值可以随时间变化,因此我的代码中有一个更新函数。问题是,mDb.update总是会抛出错误,即使在第一次成功运行代码并创建表之后(我知道这一点,因为这些值稍后会在应用程序中显示),也会将[c]命名为“Android”: android.database.sqlite.SQLiteException:没有这样的列:android:,编译时:UPDATE ThemeFavorites SET Favorites=?其中Name=Android 让我困惑的是,代码似乎在寻找一个名为Android的列,而不是KEY_NAME列……有人能解释一下吗Android SQL更新一致抛出错误,android,sql,sql-update,Android,Sql,Sql Update,我有代码可以下载一组成对的数据(项和值)。该值可以随时间变化,因此我的代码中有一个更新函数。问题是,mDb.update总是会抛出错误,即使在第一次成功运行代码并创建表之后(我知道这一点,因为这些值稍后会在应用程序中显示),也会将[c]命名为“Android”: android.database.sqlite.SQLiteException:没有这样的列:android:,编译时:UPDATE ThemeFavorites SET Favorites=?其中Name=Android 让我困惑的是
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++;
}
}
您需要用引号分隔字符串:
mDb.update(表主题收藏夹、初始值、键名称+“=”+名称[c]+“”,null)代码>
如果字符串不在引号中,则假定它是表中的字段名。不应该是更新mefavorites SET Favorites=?其中Name='Android'
您通常需要在SQL查询中分隔字符串就是这样!。。。谢谢,我就知道是那样的蠢事。我弄不明白这件事真让我难受。我读了另一个回复才明白你做了什么。同样的事,谢谢!
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);";