更新数据库原始代码的一段代码:
private EditText et;
//...
private void updateRecipe(){
SQLiteDatabase db=recipes.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(RECIPE, et.getText().toString());
db.update(RECIPES_TABLE, values, "id=?", new String[]{id});
}
运行时,会发生错误:
Error updating recipe=Efrerer using UPDATE recipes SET recipe=? WHERE id=?
android.database.sqlite.SQLiteException: no such column: id: , while compiling: UPDATE recipes SET recipe=? WHERE id=?
这些是我的SQL查询:
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE "+CATEGORY_TABLE+" ("+_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
CATEGORY_NAME+" TEXT NOT NULL);");
db.execSQL("CREATE TABLE "+RECIPES_TABLE+" ("+_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
RECIPE_NAME+" TEXT NOT NULL, "+CATEGORY_ID+" INTEGER, "+ RECIPE+" TEXT NOT NULL);");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS "+CATEGORY_TABLE);
db.execSQL("DROP TABLE IF EXISTS " +RECIPES_TABLE);
}
答案 0 :(得分:1)
请发布用于创建db的语句。您似乎只是没有创建合适的列。
您只需要检查_ID变量包含的值。可能与您在更新语句中使用的所需“id”有所不同吗?
答案 1 :(得分:1)
只需使用"id='" + <value> + "'"
作为whereClause即可解决此错误。
机器人SQLite API对字符串和引号非常反复无常..