Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQL更新一致抛出错误_Android_Sql_Sql Update - Fatal编程技术网

Android SQL更新一致抛出错误

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 让我困惑的是

我有代码可以下载一组成对的数据(项和值)。该值可以随时间变化,因此我的代码中有一个更新函数。问题是,mDb.update总是会抛出错误,即使在第一次成功运行代码并创建表之后(我知道这一点,因为这些值稍后会在应用程序中显示),也会将[c]命名为“Android”:

android.database.sqlite.SQLiteException:没有这样的列:android:,编译时:UPDATE ThemeFavorites SET Favorites=?其中Name=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++;
    }
}

您需要用引号分隔字符串:

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);";