Android SQLite JOIN表和搜索查询

时间:2016-04-14 13:15:51

标签: android database sqlite

您好我是Android Studio和本网站的新手,并尝试使用SQLite作为数据库。我正在创建一个基于成分的搜索食物菜单。我把菜单分成了3种类型的菜肴,所以有3张桌子可以分开每种菜肴。还有另外3张香料,肉类和蔬菜桌子。总共我在1个数据库中创建了6个表。我正在尝试将3种美食表加入1中,将成分加入1中。分离每个项目背后的想法是出于显示目的。请帮忙!下面是我的数据库代码,在底部是我尝试加入表但不成功:

public class mysqlite extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "cuisine_database5.db";

//Cuisine Table------------------------------------

public static final String CHINESE_TABLE = "chinesetable";
public static final String CHI_ID = "CHI_ID";
public static final String CHI_TITLE = "CHI_TITLE";   //for title of dish
public static final String CHI_DESC = "CHI_DESC";    //for description
public static final String CHI_IG = "CHI_IG";  //for ingredients

public static final String JAPANESE_TABLE = "japanesetable";
public static final String JAP_ID = "JAP_ID";
public static final String JAP_TITLE = "JAP_TITLE";   //for title of dish
public static final String JAP_DESC = "JAP_DESC";    //for description
public static final String JAP_IG = "JAP_IG";  //for ingredients

public static final String WESTERN_TABLE = "westerntable";
public static final String WES_ID = "WES_ID";
public static final String WES_TITLE = "WES_TITLE";   //for title of dish
public static final String WES_DESC = "WES_DESC";    //for description
public static final String WES_IG = "WES_IG";  //for ingredients

//Ingredient Table----------------------------------

public static final String SPICE_TABLE = "spicetable";
public static final String SPICE_ID = "SPICE_ID";
public static final String SPICE_TITLE = "SPICE_TITLE";

public static final String MEAT_TABLE = "meattable";
public static final String MEAT_ID = "MEAT_ID";
public static final String MEAT_TITLE = "MEAT_TITLE";

public static final String VEGGIE_TABLE = "veggietable";
public static final String VEGGIE_ID = "VEGGIE_ID";
public static final String VEGGIE_TITLE = "VEGGIE_TITLE";

//Join table

/*public static final String M = "spicetable";
public static final String SPICE_ID = "SPICE_ID";
public static final String SPICE_TITLE = "SPICE_TITLE";*/

public mysqlite(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String query1, query2, query3, query4, query5, query6;
    query1 = "CREATE TABLE "+CHINESE_TABLE+"("
            +CHI_ID+ " INTEGER PRIMARY KEY, "
            +CHI_TITLE+ " TEXT, "
            +CHI_DESC+ " TEXT, "
            +CHI_IG+ " TEXT " + ");";
    db.execSQL(query1);

    query2 = "CREATE TABLE "+JAPANESE_TABLE+"("
            +JAP_ID+ " INTEGER PRIMARY KEY, "
            +JAP_TITLE+ " TEXT, "
            +JAP_DESC+ " TEXT, "
            +JAP_IG+ " TEXT " + ");";
    db.execSQL(query2);

    query3 = "CREATE TABLE "+WESTERN_TABLE+"("
            +WES_ID+ " INTEGER PRIMARY KEY, "
            +WES_TITLE+ " TEXT, "
            +WES_DESC+ " TEXT, "
            +WES_IG+ " TEXT " + ")";
    db.execSQL(query3);

    query4 = "CREATE TABLE "+SPICE_TABLE+"("
            +SPICE_ID+ " INTEGER PRIMARY KEY, "
            +SPICE_TITLE+ " TEXT "+ ");";
    db.execSQL(query4);

    query5 = "CREATE TABLE "+MEAT_TABLE+"("
            +MEAT_ID+ " INTEGER PRIMARY KEY, "
            +MEAT_TITLE+ " TEXT " + ");";
    db.execSQL(query5);

    query6 = "CREATE TABLE "+VEGGIE_TABLE+"("
            +VEGGIE_ID+ " INTEGER PRIMARY KEY, "
            +VEGGIE_TITLE+ " TEXT " + ")";
    db.execSQL(query6);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS" + CHINESE_TABLE);
    db.execSQL("DROP TABLE IF EXISTS" + JAPANESE_TABLE);
    db.execSQL("DROP TABLE IF EXISTS" + WESTERN_TABLE);

    db.execSQL("DROP TABLE IF EXISTS" + SPICE_TABLE);
    db.execSQL("DROP TABLE IF EXISTS" + MEAT_TABLE);
    db.execSQL("DROP TABLE IF EXISTS" + VEGGIE_TABLE);
    onCreate(db);
}

//----------------------------------------------------
//adding item into database table---------------------

public boolean addtoChinesetable(String title, String desc, String ig) {
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(CHI_TITLE, title);
    contentValues.put(CHI_DESC, desc);
    contentValues.put(CHI_IG, ig);
    long checker = sqLiteDatabase.insert(CHINESE_TABLE, null, contentValues);

    if (checker == -1) {
        return false;
    } else {
        return true;
    }
}
public boolean addtoJapanesetable(String title, String desc, String ig) {
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(JAP_TITLE, title);
    contentValues.put(JAP_DESC, desc);
    contentValues.put(JAP_IG, ig);
    long checker = sqLiteDatabase.insert(JAPANESE_TABLE, null, contentValues);

    if (checker == -1) {
        return false;
    } else {
        return true;
    }
}
public boolean addtoWesterntable(String title, String desc, String ig) {
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(WES_TITLE, title);
    contentValues.put(WES_DESC, desc);
    contentValues.put(WES_IG, ig);
    long checker = sqLiteDatabase.insert(WESTERN_TABLE, null, contentValues);

    if (checker == -1) {
        return false;
    } else {
        return true;
    }
}
public boolean addtoSpicetable(String title) {
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(SPICE_TITLE, title);
    long checker = sqLiteDatabase.insert(SPICE_TABLE, null, contentValues);

    if (checker == -1) {
        return false;
    } else {
        return true;
    }
}
public boolean addtoMeattable(String title) {
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(MEAT_TITLE, title);
    long checker = sqLiteDatabase.insert(MEAT_TABLE, null, contentValues);

    if (checker == -1) {
        return false;
    } else {
        return true;
    }
}
public boolean addtoVeggietable(String title) {
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(VEGGIE_TITLE, title);
    long checker = sqLiteDatabase.insert(VEGGIE_TABLE, null, contentValues);

    if (checker == -1) {
        return false;
    } else {
        return true;
    }
}

//-------------------------------------------------------

//perform display listview to specific content----------
public Cursor displayChineseMenu() {
    SQLiteDatabase sqLiteDatabase = getReadableDatabase();
    Cursor res;
    res = sqLiteDatabase.rawQuery("SELECT * FROM " + CHINESE_TABLE, null);
    return res;
}
public Cursor displayJapaneseMenu() {
    SQLiteDatabase sqLiteDatabase = getReadableDatabase();
    Cursor res;
    res = sqLiteDatabase.rawQuery("SELECT * FROM " + JAPANESE_TABLE, null);
    return res;
}
public Cursor displayWesternMenu() {
    SQLiteDatabase sqLiteDatabase = getReadableDatabase();
    Cursor res;
    res = sqLiteDatabase.rawQuery("SELECT * FROM " + WESTERN_TABLE, null);
    return res;
}
public Cursor displaySpices() {
    SQLiteDatabase sqLiteDatabase = getReadableDatabase();
    Cursor res;
    res = sqLiteDatabase.rawQuery("SELECT * FROM " + SPICE_TABLE, null);
    return res;
}
public Cursor displayMeats() {
    SQLiteDatabase sqLiteDatabase = getReadableDatabase();
    Cursor res;
    res = sqLiteDatabase.rawQuery("SELECT * FROM " + MEAT_TABLE, null);
    return res;
}
public Cursor displayVeggies() {
    SQLiteDatabase sqLiteDatabase = getReadableDatabase();
    Cursor res;
    res = sqLiteDatabase.rawQuery("SELECT * FROM " + VEGGIE_TABLE, null);
    return res;
}

//-----------------------------------------------------

//perform delete function and remove item from database---------
public int deleteChineseData(String title){
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    return sqLiteDatabase.delete(CHINESE_TABLE, "CHI_TITLE = ?", new String[] {title});
}
public int deleteJapaneseData(String title){
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    return sqLiteDatabase.delete(JAPANESE_TABLE, "JAP_TITLE = ?", new String[] {title});
}
public int deleteWesternData(String title){
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    return sqLiteDatabase.delete(WESTERN_TABLE, "WES_TITLE = ?", new String[] {title});
}
public int deleteSpiceData(String title){
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    return sqLiteDatabase.delete(SPICE_TABLE, "SPICE_TITLE = ?", new String[] {title});
}
public int deleteMeatData(String title){
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    return sqLiteDatabase.delete(MEAT_TABLE, "MEAT_TITLE = ?", new String[] {title});
}
public int deleteVeggieData(String title){
    SQLiteDatabase sqLiteDatabase = getWritableDatabase();
    return sqLiteDatabase.delete(VEGGIE_TABLE, "VEGGIE_TITLE = ?", new String[] {title});
}

//-----------------------------------------------------------------

//JOIN Table-----------------------------------------------------
/*public Cursor JoinCuisineTables(){
    SQLiteDatabase sqLiteDatabase = getReadableDatabase();
    Cursor res;
    res = sqLiteDatabase.rawQuery("SELECT * FROM "
            + CHINESE_TABLE + " c "
            + " JOIN " + JAPANESE_TABLE + " j "
            + " ON c." + JAP_ID + " = j."
            , null);
    return res;
}*/
}

0 个答案:

没有答案