2011-09-12 10 views
5

Pracuję nad aplikacją menu restauracji. Moja aplikacja ma tabelę sqlite, która ma następujące kolumny:Android sqlite: jak odzyskać określone dane z konkretnej kolumny?

"id", "category", "item_name" 

Zawartość kolumny kategorii jest ciągiem typu. Podstawowy klucz tabeli to id.

Chcę pobrać dane określonej kategorii.

Na przykład chcę pobrać nazwy pozycji wszystkich produktów należących do kategorii Veg, a następnie wyświetlić ten wynik w widoku listy.

Próbowałem podążać za różnymi pytaniami, ale oba nie działają. Proszę pomóż mi.

String vg ="Veg"; 
Cursor mCursor = database.query(true, DATABASE_TABLE, new String[] { 
      KEY_ROWID, KEY_CATEGORY, KEY_NAME,KEY_PRIZE,KEY_DESCRIPTION }, 
     KEY_CATEGORY + "=" + vg , null, null, null,null, null); 
     if (mCursor != null) {    
         mCursor.moveToFirst(); 
     } 
     return mCursor; 

Raw zapytania

String query = "SELECT * FROM todo WHERE category =" + vg ; 
      Cursor cursor = database.rawQuery(query,null); 
      if (cursor != null) { 
       cursor.moveToFirst(); 
      } 
      return cursor; 
+0

http://stackoverflow.com/questions/6653502/android-sqlite -how-to-get-specific-columnrow-value http://stackoverflow.com/questions/5974799/how-can-i-retrieve-a-particular-coloumn---qq-sqlite-in-android –

Odpowiedz

14

spróbuj tego:

String query = "SELECT * FROM todo WHERE category='" + vg; 

Cursor cursor = database.rawQuery(query,null); 

     if (cursor != null) { 
      cursor.moveToFirst(); 
     } 
     return cursor; 
+1

Dzięki, to również działa. "brakowało po" = "z mojego zapytania. – sagar

9
String query = "SELECT item_name FROM todo WHERE category =" + vg ; 
Cursor cursor = database.rawQuery(query,null); 
if (cursor.moveToFirst()) { 
     while (cursor.isAfterLast() != true) { 
      string itemname = cursor.getString(cursor.getColumnIndex("item_name"))); 
      } 
} 

Tutaj moveToFirst sprawdza, czy istnieją elementy spełniające kryteria, a następnie za pomocą kursora za pomocą pętli while. Nazwa elementu string może zostać zastąpiona przez listę adaper w celu zapełnienia danych. Mam nadzieję że to pomoże.

1

Spróbuj tego:

String vg ="Veg"; 
return database.rawQuery("SELECT * FROM subjects where " + KEY_CATEGORY + " = ?", 
          new String[]{vg}); 
0
String q="SELECT * FROM todo WHERE category='" + vg +"'"; 
    SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = null; 
     cursor = db.rawQuery(q, null); 
     if (cursor.moveToFirst()) { 
      do { 

      } while (cursor.moveToNext()); 

     } 
5
dbHelper = new DBHelper(getApplicationContext()); 
SQLiteDatabase db = dbHelper.getReadableDatabase(); 

Cursor cursor = db.rawQuery("select * from centuaryTbl where email='"+email+"'",null); 
if (cursor.moveToFirst()) 
{ 
    do 
    { 
     String s1 = cursor.getString(cursor.getColumnIndex("s1")); 
     String s2 = cursor.getString(cursor.getColumnIndex("s2")); 
     String s3 = cursor.getString(cursor.getColumnIndex("s3")); 


    }while (cursor.moveToNext()); 
} 
0
String selectQuery = "select * from " + TABLE; 
     sqlDatabase = this.getWritableDatabase(); 

    Cursor cursor = sqlDatabase.rawQuery(selectQuery, null); 

    if (cursor != null) { 
     cursor.moveToFirst(); 
    } 


    return cursor; 

to pomoże ..

1
String query = "SELECT * FROM Table_Name WHERE Col_Name='name'"; 
Cursor cursor = mDb.rawQuery(query, null); 
+0

Podczas gdy ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego tego, dlaczego i/lub jak ten kod odpowiada na pytanie, poprawia jego długoterminową wartość. –

Powiązane problemy