2010-12-07 5 views
1

Meine SQLite Abfrage Rückkehr nur einen Datensatz zurückgibt, hat jedoch die Tabelle mehrere ZeilenAndroid SQLite rawquery nur erste Datensatz

cursor=mydb.rawQuery("Select category from items;", null); 

ich auch GROUP BY versucht haben, aber immer noch nicht funktionieren.

Ich bin neu in SQLite, würde jede Hilfe zu schätzen wissen. Vielen Dank.

+0

Bitte geben Sie ein paar Zeilen des Inhalts der Tabelle und den Code nach rawQuery verwendet, um den Inhalt durch die Cursor darauf zu prüfen. –

Antwort

6

allererst Ihre String-Abfrage muss nicht so, anstatt sie zu vorbei als beendet werden:

"Select category from items;" 

versuchen Sie sollten es als vorbei:

"Select category from items" 

wie auf this page erwähnt.

Schleifen Sie auch über den Cursor? Hier ist ein Beispiel dafür, wie Daten, um aus einem Cursor mit einer while-Schleife:

ArrayList<String> results = new ArrayList<String>() 
while (cursor.moveNext()) { 
    results.add(cursor.getString(0)); // 0 is the first column 
} 
+0

Danke für deine Hilfe jackerran, ich habe ";" aber immer noch das gleiche Ergebnis. Nur der erste Datensatz wird zurückgegeben, wenn ich versuche, die Abfrage wie folgt auszuführen: "Wählen Sie die Kategorie aus den Elementen GROUP BY category". cursor.getcount() gibt nur eine Zeile zurück. Wenn ich die gleiche Abfrage in SQLite auf meinem Desktop ausführen, funktioniert es gut. – Shafi

+0

Ich würde die Gruppe entfernen, da Sie sie nicht brauchen sollten. Haben Sie in Ihrer Datenbank verifiziert, dass die Datensätze vorhanden sind? Und dass Sie sich mit der richtigen Datenbank verbinden? Gibt es auch Unterschiede in Ihren Versionen von Java/sqlite/android sdk/und Betriebssystemen zwischen Ihrer Desktop- und Laptop-Umgebung? –

4

Zuerst suchen:

Cursor cs = myDataBase.rawQuery("Your query", null); 
if (cs.moveToFirst()) { 
    String a = cs.getString(cs.getColumnIndex("your_column_name")); 
    cs.close(); 
    return a; 
} 
cs.close(); 
return ""; 

die Informationen von Cursor-Adresse:

if (cs.moveToFirst()) { 
    ArrayList<String> results = new ArrayList<String>() 
    do { 
      results.add(cs.getString(cs.getColumnIndex("your_column_name"))); 
    } while (cs.moveNext()); 
} 

Ohne wenn ich in meinem Projekt Fehler gemacht habe. Aber das hat für mich funktioniert. Ihre Anfrage sieht übrigens nicht gut aus. Wenn Sie einige Informationen zu Ihrer Datenbank angeben, können wir Ihnen viel mehr helfen.

2

verwenden alle Elemente aus der Tabelle wählen:

Cursor Cursor = db.rawQuery ("SELECT * FROM Tabellenname, null);

0

brauchen Sie keine rohe Abfragemethode, denke ich. dass die androide Art und Weise besser in diesem Fall:.

db.query(items, category, null, null, null, null, null); 

als mit dem Cursor, wie bereits in dem anderen Kommentar geschrieben

1

dies können Ihnen helfen,

public ArrayList<mydata> getallContents() { 

    ArrayList<mydata> lst = new ArrayList<mydata>(); 

    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor c = db.rawQuery("select * from " + GAMETABLE, null); 

    if (c.moveToFirst()) { 
     do { 
      lst.add(new mydata(c.getString(1), 
        c.getString(3),c.getString(4),c.getString(5),c.getString(6))); 

     } while (c.moveToNext()); 
    } 
    db.close(); 
    return lst; 
} 
Verwandte Themen