error sqlite in database

33 views Asked by At

The error message:

06-12 18:11:25.900: E/SQLiteLog(823): (1) near "refingredient": syntax error
06-12 18:11:25.990: E/AndroidRuntime(823): FATAL EXCEPTION: main
06-12 18:11:25.990: E/AndroidRuntime(823): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.khalil.dabaresto/com.khalil.dabaresto.MainActivity}: android.database.sqlite.SQLiteException: near "refingredient": syntax error (code 1): , while compiling: CREATE TABLE plat(idplat INTEGER PRIMARY KEY, platname TEXT, prixplat INTEGER, refcategorie INTEGER NOT NULL,  FOREIGN KEY (refcategorie) REFERENCES categorie (idcategorie)refingredient INTEGER NOT NULL,  FOREIGN KEY(refingredient) REFERENCES ingredient ( idingredient)) );

Could you help me please i cannot detect my error

package com.khalil.dabaresto;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.Cursor;
import android.widget.Spinner;
import android.content.Context;
import android.content.ContentValues;


public class MyDBHandler extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "resto.db";
private static final String TABLE_RESTAURANT = "restaurant";
private static final String COLUMN_ID = "id";
private static final String COLUMN_RESTAURANTNAME = "restaurantname";
private static final String COLUMN_REFVILLE = "refville";

private static final String TABLE_MENU ="menu";
private static final String COLUMN_IDMENU ="idmenu";
private static final String COLUMN_MENUNAME ="menuname";
private static final String COLUMN_PRIXMENU = "prixmenu";
private static final String COLUMN_REFRESTAURANT ="refrestaurant";

private static final String TABLE_PLAT ="plat";
private static final String COLUMN_IDPLAT ="idplat";
private static final String COLUMN_PLATNAME ="platname";
private static final String COLUMN_PRIXPLAT ="prixplat";
private static final String COLUMN_REFCATEGORIE ="refcategorie";
private static final String COLUMN_REFINGREDIENT ="refingredient";

private static final String TABLE_INGREDIENT ="ingredient";
private static final String COLUMN_IDINGREDIENT ="idingredient";
private static final String COLUMN_INGREDIENTNAME ="ingredientname";

private static final String TABLE_CATEGORIE ="categorie";
private static final String COLUMN_IDCATEGORIE ="idcategorie";
private static final String COLUMN_CATEGORIENAME ="categoriename";

private static final String TABLE_VILLE ="ville";
private static final String COLUMN_IDVILLE ="idville";
private static final String COLUMN_VILLENAME ="villename";


public MyDBHandler(Context context, String name, CursorFactory factory,
        int version) {
    super(context, DATABASE_NAME, factory, DATABASE_VERSION);

}

@Override
public void onCreate(SQLiteDatabase db) {
    String query ="CREATE TABLE " + TABLE_RESTAURANT + "(" + 
            COLUMN_ID + " INTEGER PRIMARY KEY, " +
            COLUMN_RESTAURANTNAME + " TEXT " +
            ")";
    db.execSQL(query);

    String query1 = "CREATE TABLE " + TABLE_MENU + "(" +
            COLUMN_IDMENU + " INTEGER PRIMARY KEY, " +
            COLUMN_MENUNAME + " TEXT, " +
            COLUMN_PRIXMENU + " INTEGER, " +
            COLUMN_REFRESTAURANT + " INTEGER NOT NULL, FOREIGN KEY ("+COLUMN_REFRESTAURANT+") REFERENCES "+TABLE_RESTAURANT+" ( "+COLUMN_ID+") );";
    db.execSQL(query1);

    String query2 = " CREATE TABLE " + TABLE_PLAT + "(" +
            COLUMN_IDPLAT + " INTEGER PRIMARY KEY, " +
            COLUMN_PLATNAME + " TEXT, " +
            COLUMN_PRIXPLAT + " INTEGER, " +
            COLUMN_REFCATEGORIE + " INTEGER NOT NULL, " +" FOREIGN KEY ("+COLUMN_REFCATEGORIE+") REFERENCES " +TABLE_CATEGORIE+" ("+COLUMN_IDCATEGORIE ")" +
            COLUMN_REFINGREDIENT + " INTEGER NOT NULL, " +" FOREIGN KEY("+COLUMN_REFINGREDIENT+ ") REFERENCES " +TABLE_INGREDIENT+" ( "+COLUMN_IDINGREDIENT+") );";
    db.execSQL(query2);

    String query3 ="CREATE TABLE" + TABLE_INGREDIENT + "(" +
            COLUMN_IDINGREDIENT + " INTEGER PRIMARY KEY, " +
            COLUMN_INGREDIENTNAME +" TEXT" +
             ");";
    db.execSQL(query3);

    String query4 = "CREATE TABLE" + TABLE_CATEGORIE + "(" +    
            COLUMN_IDCATEGORIE + " INTEGER PRIMARY KEY, " +
            COLUMN_CATEGORIENAME +" TEXT" +
             ");";
    db.execSQL(query4);

    String query5 = "CREATE TABLE" + TABLE_VILLE + "(" +    
            COLUMN_IDVILLE + " INTEGER PRIMARY KEY, " +
            COLUMN_VILLENAME +" TEXT" +
             ");";
    db.execSQL(query5);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("DROP TABLE IF EXISTS " + TABLE_RESTAURANT);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_MENU);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_PLAT);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_INGREDIENT);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CATEGORIE);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_VILLE);
    onCreate(db);

}

public void addRestaurant(Restaurant restaurant,Ville ville){
    ContentValues values = new ContentValues();
    values.put(COLUMN_RESTAURANTNAME, restaurant.get_restaurantname());
    values.put(COLUMN_REFVILLE,ville.get_idville() );
    SQLiteDatabase db= getWritableDatabase();
    db.insert(TABLE_RESTAURANT, null, values);
    db.close();
}

public void addMenu(Menu menu,Restaurant restaurant){
    ContentValues values = new ContentValues();
    values.put(COLUMN_MENUNAME, menu.get_menuname());
    values.put(COLUMN_PRIXMENU,menu.get_prixmenu() );
    values.put(COLUMN_REFRESTAURANT, restaurant.get_id());
    SQLiteDatabase db= getWritableDatabase();
    db.insert(TABLE_MENU, null, values);
    db.close();
}

public void addPlat(Plat plat,Categorie categorie,Ingredient ingredient){
    ContentValues values = new ContentValues();
    values.put(COLUMN_PLATNAME, plat.get_platname());
    values.put(COLUMN_PRIXPLAT,plat.get_prixplat() );
    values.put(COLUMN_REFCATEGORIE, categorie.get_idcategorie());
    values.put(COLUMN_REFINGREDIENT, ingredient.get_idingredient());
    SQLiteDatabase db= getWritableDatabase();
    db.insert(TABLE_PLAT, null, values);
    db.close();
}

public void addIngredient(Ingredient ingredient){
    ContentValues values = new ContentValues();
    values.put(COLUMN_INGREDIENTNAME, ingredient.get_ingredientname());
    SQLiteDatabase db= getWritableDatabase();
    db.insert(TABLE_INGREDIENT, null, values);
    db.close();
}

public void addCategorie(Categorie categorie){
    ContentValues values = new ContentValues();
    values.put(COLUMN_CATEGORIENAME, categorie.get_categoriename());
    SQLiteDatabase db= getWritableDatabase();
    db.insert(TABLE_CATEGORIE, null, values);
    db.close();
}

public void addVille(Ville ville){
    ContentValues values = new ContentValues();
    values.put(COLUMN_VILLENAME, ville.get_villename());
    SQLiteDatabase db= getWritableDatabase();
    db.insert(TABLE_VILLE, null, values);
    db.close();
}

public void deleteRestaurant(String restaurantName){
    SQLiteDatabase db=getWritableDatabase();
    db.execSQL("DELETE FROM " + TABLE_RESTAURANT + " WHERE " + COLUMN_RESTAURANTNAME + "=\"" + restaurantName + "\";" );

}

public void deletePlat(String platName){
    SQLiteDatabase db=getWritableDatabase();
    db.execSQL("DELETE FROM " +TABLE_PLAT + "WHERE " + COLUMN_PLATNAME+ "=\""+platName+"\";");

}
public String databaseToString(){
    String dbString = "";
    SQLiteDatabase db =getWritableDatabase();
    String query ="SELECT * FROM"+TABLE_RESTAURANT + "WHERE 1";
    Cursor c=db.rawQuery(query, null);
    c.moveToFirst();


    while (!c.isAfterLast()){
        if(c.getString(c.getColumnIndex(" restaurantname"))!=null){
        dbString += c.getString(c.getColumnIndex(" restaurantname"));
        dbString +="\n";
        }
    }

db.close();
   return dbString;
}

public String databaseToString1(){
    String dbString1 = "";
    SQLiteDatabase db1 =getWritableDatabase();
    String query1 ="SELECT * FROM"+TABLE_MENU + "WHERE 1";
    Cursor c1=db1.rawQuery(query1, null);
    c1.moveToFirst();


    while (!c1.isAfterLast()){
        if(c1.getString(c1.getColumnIndex("menuname"))!=null){
            dbString1 += c1.getString(c1.getColumnIndex("menuname"));
            dbString1 +="\n";   
        }
    }

db1.close();
   return dbString1;
}



public String databaseToString2(){
    String dbString2 = "";
    SQLiteDatabase db2 =getWritableDatabase();
    String query2 ="SELECT * FROM"+TABLE_PLAT + "WHERE 1";
    Cursor c2=db2.rawQuery(query2, null);
    c2.moveToFirst();


    while (!c2.isAfterLast()){
        if(c2.getString(c2.getColumnIndex("platname"))!=null){
        dbString2 += c2.getString(c2.getColumnIndex("platname"));
        dbString2 +="\n";
        }
    }

db2.close();
   return dbString2;
}
public String databaseToString3(){
    String dbString3 = "";
    SQLiteDatabase db3 =getWritableDatabase();
    String query3 ="SELECT * FROM"+TABLE_INGREDIENT + "WHERE 1";
    Cursor c3=db3.rawQuery(query3, null);
    c3.moveToFirst();


    while (!c3.isAfterLast()){
        if(c3.getString(c3.getColumnIndex("ingredientname"))!=null){
        dbString3 += c3.getString(c3.getColumnIndex("ingredientname"));
        dbString3 +="\n";
        }
    }

db3.close();
   return dbString3;
}
public String databaseToString4(){
    String dbString4 = "";
    SQLiteDatabase db4 =getWritableDatabase();
    String query4 ="SELECT * FROM"+TABLE_CATEGORIE + "WHERE 1";
    Cursor c4=db4.rawQuery(query4, null);
    c4.moveToFirst();


    while (!c4.isAfterLast()){
        if(c4.getString(c4.getColumnIndex("categoriename"))!=null){
        dbString4 += c4.getString(c4.getColumnIndex("categoriename"));
        dbString4 +="\n";
        }
    }

db4.close();
   return dbString4;
}
public String databaseToString5(){
    String dbString5 = "";
    SQLiteDatabase db5 =getWritableDatabase();
    String query5 ="SELECT * FROM"+TABLE_VILLE + "WHERE 1";
    Cursor c5=db5.rawQuery(query5, null);
    c5.moveToFirst();


    while (!c5.isAfterLast()){
        if(c5.getString(c5.getColumnIndex("villename"))!=null){
        dbString5 += c5.getString(c5.getColumnIndex("villename"));
        dbString5 +="\n";
        }
    }

db5.close();
   return dbString5;
}
}
1

There are 1 answers

1
elixenide On

You're missing a comma, which is causing a syntax error. Here is the corrected code:

String query2 = " CREATE TABLE " + TABLE_PLAT + "(" +
        COLUMN_IDPLAT + " INTEGER PRIMARY KEY, " +
        COLUMN_PLATNAME + " TEXT, " +
        COLUMN_PRIXPLAT + " INTEGER, " +
        COLUMN_REFCATEGORIE + " INTEGER NOT NULL, " +" FOREIGN KEY ("+COLUMN_REFCATEGORIE+") REFERENCES " +TABLE_CATEGORIE+" ("+COLUMN_IDCATEGORIE ")," +
        // The missing comma was here:...............................................................................................................^
        COLUMN_REFINGREDIENT + " INTEGER NOT NULL, " +" FOREIGN KEY("+COLUMN_REFINGREDIENT+ ") REFERENCES " +TABLE_INGREDIENT+" ( "+COLUMN_IDINGREDIENT+") );";
db.execSQL(query2);