Java Android:SQLite说一个列不存在

Java Android:SQLite说一个列不存在,java,android,sqlite,Java,Android,Sqlite,我试图获取表中的所有值,这些值的列\u parentbook设置为某个值。当我试图检索条目时,我得到如下所示的错误 E/SQLiteLog: (1) table recipes has no column named _parentbook E/SQLiteDatabase: Error inserting _parentbook=Test _recipemethod=Stir in pot for 20 mins _recipeingredients=No bugs, freedom _rec

我试图获取表中的所有值,这些值的列\u parentbook设置为某个值。当我试图检索条目时,我得到如下所示的错误

E/SQLiteLog: (1) table recipes has no column named _parentbook
E/SQLiteDatabase: Error inserting _parentbook=Test _recipemethod=Stir in pot for 20 mins _recipeingredients=No bugs, freedom _recipedescription=Test recipe _recipename=Recipe 1 in Test _recipenotes=Do on Android Studio
错误是指下面我用来向数据库添加配方的方法

public void addRecipe(Recipe recipe) {

    ContentValues values = new ContentValues();
    values.put(COLUMN_RECIPE_NAME, recipe.getRecipeTitle());
    values.put(COLUMN_RECIPE_DESCRIPTION, recipe.getRecipeDescription());
    values.put(COLUMN_RECIPE_INGREDIENTS, recipe.getIngredients());
    values.put(COLUMN_RECIPE_METHOD, recipe.getMethod());
    values.put(COLUMN_RECIPE_NOTES, recipe.getNotes());
    //values.put(COLUMN_IMAGE_ID, recipe.getImageId());
    values.put(COLUMN_PARENT_BOOK, recipe.getParentBook());

    SQLiteDatabase db = this.getWritableDatabase();
    db.insert(TABLE_RECIPES, null, values);
    db.close();
}
用于初始化表_配方的代码:

String CREATE_TABLE_RECIPES = "CREATE TABLE IF NOT EXISTS " + TABLE_RECIPES + " (" +
        COLUMN_ID_2 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        COLUMN_RECIPE_NAME + " TEXT, " +
        COLUMN_RECIPE_DESCRIPTION + " TEXT, " +
        COLUMN_RECIPE_INGREDIENTS + " TEXT, " +
        COLUMN_RECIPE_METHOD + " TEXT, " +
        COLUMN_RECIPE_NOTES + " TEXT, " +
        COLUMN_IMAGE_ID + " INTEGER " +
        COLUMN_PARENT_BOOK + " TEXT" +
        ");";


@Override
public void onCreate(SQLiteDatabase db) {
    Log.e(TAG, "OnCreate() called");
    db.execSQL(CREATE_TABLE_RECIPES);

}
从表中获取配方的方法:

List<Recipe> recipes;
public List<Recipe> getRecipes(String bookName) {

    recipes = new ArrayList<>();

    SQLiteDatabase db = getWritableDatabase();
    //String query = "SELECT "+ COLUMN_PARENT_BOOK +" FROM " + TABLE_RECIPES + " WHERE " + COLUMN_PARENT_BOOK + "=" + bookName;
    String query = "SELECT * FROM " + TABLE_RECIPES;// + " WHERE 1";

    // Cursor going to point to a location in the results
    Cursor c = db.rawQuery(query, null);
    // Move it to the first row of your results
    c.moveToFirst();

    if (c.moveToFirst()) {
        do {
            if (c.getString(c.getColumnIndex(COLUMN_RECIPE_NAME)) != null) {
                recipes.add(new Recipe(
                        c.getString(c.getColumnIndex(COLUMN_RECIPE_NAME)),
                        c.getString(c.getColumnIndex(COLUMN_RECIPE_DESCRIPTION)),
                        c.getString(c.getColumnIndex(COLUMN_RECIPE_INGREDIENTS)),
                        c.getString(c.getColumnIndex(COLUMN_RECIPE_METHOD)),
                        c.getString(c.getColumnIndex(COLUMN_RECIPE_NOTES)),
                        // Add image here if required
                        c.getString(c.getColumnIndex(COLUMN_PARENT_BOOK))
                ));
            }
        } while (c.moveToNext());
    }
    db.close();
    //c.close();
    return recipes;
}
我尝试过升级数据库版本,并研究了有关StackOverflow的其他类似问题,但都没有帮助

谢谢。

您忘记在CREATETABLE语句中加逗号了

而不是

 String CREATE_TABLE_RECIPES = "CREATE TABLE IF NOT EXISTS " + TABLE_RECIPES + " (" +
    COLUMN_ID_2 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
    COLUMN_RECIPE_NAME + " TEXT, " +
    COLUMN_RECIPE_DESCRIPTION + " TEXT, " +
    COLUMN_RECIPE_INGREDIENTS + " TEXT, " +
    COLUMN_RECIPE_METHOD + " TEXT, " +
    COLUMN_RECIPE_NOTES + " TEXT, " +
    COLUMN_IMAGE_ID + " INTEGER " +
    COLUMN_PARENT_BOOK + " TEXT" +
    ");";
应该是

 String CREATE_TABLE_RECIPES = "CREATE TABLE IF NOT EXISTS " + TABLE_RECIPES + " (" +
    COLUMN_ID_2 + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
    COLUMN_RECIPE_NAME + " TEXT, " +
    COLUMN_RECIPE_DESCRIPTION + " TEXT, " +
    COLUMN_RECIPE_INGREDIENTS + " TEXT, " +
    COLUMN_RECIPE_METHOD + " TEXT, " +
    COLUMN_RECIPE_NOTES + " TEXT, " +
    COLUMN_IMAGE_ID + " INTEGER, " +                     // Here you forgot to put comma(,) in this line
    COLUMN_PARENT_BOOK + " TEXT" +
    ");";

明显的打字错误是明显的