2017-03-22 11 views
2

次の表があります。このデータをJSONから取り出し、SQLiteテーブルに格納しました。私はTABLE_MACからすべてのデータをフェッチする場所meal_id = 12SQLiteデータベースから特定のデータを連続して取得する

TABLE_MAC 

| _id | meal_id | name | 
---------------------------- 
| 1 | 12,16,17| mac veggi| 
| 2 | 14,16 | mac allo | 
| 3 | 16,12,14| mac egg | 
| 4 | 112,1,14| fries | 

さて、データベースから、私は、私は、データベースからデータをフェッチするためにLIKEオペレータを適用meal_id = 12からすべてのデータを取得したいが、それをAndroidにfriesを追加します。

+1

「112」は「好き」「12」...コンマ区切りリストを1列に格納しないでください –

答えて

3

コール

オペレータ LIKE
public List<Model> getAllResult(String getId) 
    { 
     List<Model> resultList = new ArrayList<Model>(); 
     // Select All Query 
     String selectQuery = "SELECT * FROM "+ TABLE_MAC + " WHERE " + KEY_Meal_ID + " LIKE '%"+getId+"%'"; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) 
     { 
      do { 
       Model sg = new Model(); 
       sg.set_id((cursor.getString(0))); 
       ......    

       resultList.add(sg); 
      } while (cursor.moveToNext()); 

      cursor.close(); 
      db.close(); 
     } 

     // return list 
     return resultList; 
    } 
+0

これはどのくらい正確に機能しますか? 'KEY_Meal_ID'は' 12'と等しくないので、質問ごとに –

+0

はLIKEを使う必要があります。 wait –

+0

しかしそれは質問に記載されている問題です;)LIKEは動作しません。 –

1

次に、あなたがあなたのデータを取得するために、あなたのCursorをループしていますデータベース

SQLiteDatabase database = this.getWritableDatabase(); 
    String[] columns = new String[] {"_id", "meal_id", "name"}; 
    String TABLE_NAME = "TABLE_MAC"; 
    Cursor mCursor = 
      database.query(true, TABLE_NAME, columns, 
        "meal_id=12", null, null, null, null, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 

を照会するために、このような何かを試してみてください。 あなたのmeal_id列にカンマで区切られたIDを持つことはお勧めできません。これを避けるには、マッピングテーブルを実装するか、データベースを再考する必要があります。

+0

これは最初の行でこのようにmeal_id = "12,16,17"なので、0行で返されます –

関連する問題