2017-03-22 4 views
2

Ich habe folgende Tabelle. Ich habe diese Daten aus JSON geholt und in der SQLite-Tabelle gespeichert. Ich möchte alle Daten holen aus TABLE_MAC wo meal_id = 12.Bestimmte Daten in Zeile aus SQLite-Datenbank abrufen

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 | 

nun aus einer Datenbank, möchte ich von allen Daten holen meal_id = 12. Ich angewendet LIKE Operator für Daten aus einer Datenbank holen, aber es fügt fries in Android hinzu.

+1

Nun, '112' ist" wie "' 12' ... Speichern Sie keine kommagetrennte Liste in einer einzigen Spalte –

Antwort

3

Anruf LIKE Operator

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

Wie genau würde das funktionieren? 'KEY_Meal_ID' ist nicht gleich '12', da für die Frage –

+0

LIKE verwendet werden muss. warte –

+0

Aber das ist das Problem in der Frage erwähnt;) LIKE funktioniert nicht –

1

so etwas wie dieses Versuchen Sie, Ihre Datenbank abzufragen

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(); 
    } 

Dann werden Sie eine Schleife durch Ihre Cursor haben, um Ihre Daten abzurufen. Mit Komma getrennten IDs in Ihrer meal_id Spalte ist keine gute Idee. Sie sollten eine Mapping-Tabelle implementieren oder Ihre Datenbank überdenken, um dies zu vermeiden.

+0

dies wird mit 0 Zeilen zurückgegeben, weil meat_id = "12,16,17" so in der ersten Zeile –

Verwandte Themen