wilrus
wilrus

Reputation: 23

SQLiteException no such table, am I missing something?

I have researched other instances of this error all morning but nothing i've tried so far has worked. It could be something obvious as I am quite new to this.

I am trying to return the results of the GET_ALL_INGREDIENTS query. Which I will then put into a 2d array, but you don't need to worry about that. My TABLE_RECIPES table works fine.

SQLiteException: no such table: TABLE_INGREDIENTS (code 1): , while compiling: SELECT INGR...etc....

Which occurs on the last line of this bit of code:

public String[][] getRecipeIngredients(int id) {

String GET_ALL_INGREDIENTS = "SELECT INGREDIENT_NAME, INGREDIENT_QUANTITY, INGREDIENT_UNIT " +
            "FROM TABLE_INGREDIENTS " +
            "INNER JOIN TABLE_RECIPE_INGREDIENTS ON TABLE_RECIPE_INGREDIENTS.INGREDIENT_ID=TABLE_INGREDIENTS.INGREDIENT_ID " +
            "WHERE RECIPE_INGREDIENTS.RECIPE_ID=" + id;

    db = new MyDBHandler(mContext);
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor c = db.rawQuery(GET_ALL_INGREDIENTS, null);

Table Creation:

final String CREATE_TABLE_RECIPES = "CREATE TABLE IF NOT EXISTS " +
        TABLE_RECIPES + "(" +
        RECIPE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        RECIPE_NAME + " TEXT, " +
        RECIPE_INSTRUCTIONS + " TEXT " +
        ")";

final String CREATE_TABLE_INGREDIENTS = "CREATE TABLE IF NOT EXISTS " +
        TABLE_INGREDIENTS + "(" +
        INGREDIENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        INGREDIENT_NAME + " TEXT NOT NULL UNIQUE " +
        ")";

final String CREATE_TABLE_RECIPE_INGREDIENTS = "CREATE TABLE IF NOT EXISTS " +
        TABLE_RECIPE_INGREDIENTS + "(" +
        RECIPE_ID + " INTEGER NOT NULL, " +
        INGREDIENT_ID + " INTEGER NOT NULL, " +
        INGREDIENT_QUANTITY + " REAL, " +
        INGREDIENT_UNIT + " TEXT, " +
        "PRIMARY KEY (" + RECIPE_ID + "," + INGREDIENT_ID + "), " +
        "FOREIGN KEY (" + RECIPE_ID + ") REFERENCES " + TABLE_RECIPES + "(" + RECIPE_ID + "), " +
        "FOREIGN KEY (" + INGREDIENT_ID + ") REFERENCES " + TABLE_INGREDIENTS + "(" + INGREDIENT_ID + ")" +
        ")";

public void onCreate(SQLiteDatabase db) {

    db.execSQL(CREATE_TABLE_RECIPES);
    db.execSQL(CREATE_TABLE_INGREDIENTS);
    db.execSQL(CREATE_TABLE_RECIPE_INGREDIENTS);
}

Thank you for reading and I really appreciate any help i can get with this.

Upvotes: 0

Views: 55

Answers (1)

laalto
laalto

Reputation: 152817

TABLE_INGREDIENTS is a variable. It's value is likely not "TABLE_INGREDIENTS" that is a string literal. So you might want to change

"FROM TABLE_INGREDIENTS " +

to

"FROM " + TABLE_INGREDIENTS +

(You have a number of other similar issues in your SQL too.)

Upvotes: 1

Related Questions