Android SQLiteDatabase更新错误

时间:2010-10-15 20:18:02

标签: android sqlite

更新数据库原始代码的一段代码:

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

2 个答案:

答案 0 :(得分:1)

请发布用于创建db的语句。您似乎只是没有创建合适的列。

您只需要检查_ID变量包含的值。可能与您在更新语句中使用的所需“id”有所不同吗?

答案 1 :(得分:1)

只需使用"id='" + <value> + "'"作为whereClause即可解决此错误。 机器人SQLite API对字符串和引号非常反复无常..