2010-11-18 2 views
0

Ich habe SQLite DB Abfrage, die mir jeweils einen Datensatz zurückgibt. Dies ist die Abfrage:Müssen eine Abfrage in eine Schleife setzen, um Ergebnismenge eins nach dem anderen

rawQuery("SELECT id, category_id, title, text FROM customer WHERE (reads = (SELECT MIN(minReads) FROM categories)) AND status = 'a' ORDER BY rating DESC, rand_index DESC LIMIT 1 ",null); 

Wenn ich will nächsten Datensatz holen, wie wir Grenze in meiner SQLite Abfrage anwenden oben ich nicht in der Lage bin nächste Datensatz zu erhalten. Limit = 1 ist notwendig, da ich Tausende von Aufzeichnungen in meinem db habe.

Wie kann ich den nächsten Datensatz abrufen, ohne die vorhandene Abfrage zu ändern? Ich kann keine Schleife darauf anwenden, da ich viele Datensätze habe und nicht alle Datensätze gleichzeitig haben möchte. Ich möchte, dass es einzeln nacheinander abgerufen wird. Ich möchte etwas sein, wo ich Ergebnisse in einem Array speichern kann, da ich vielleicht auch alte Datensätze benötige, während ich den nächsten Datensatz erhalte.

Jede Eingabe wird eine große Hilfe sein.

Antwort

2

Sie sollten alle Datensätze erhalten und dann über sie in Ihrem lokalen Klassenobjekt Formular Schleife, es ist eine wirklich schlechte Idee, Schleifen SQL-Abfrage zu tun, das ist wirklich langsam.

1

Sie können nur eine vernünftige Menge von Datensätzen mit einer Abfrage erhalten, zum Beispiel 100 Datensätze mit LIMIT 100, dann erhalten Sie die zusätzlichen Datensatzteile mit LIMIT 100 OFFSET (n-1) * 100 für jeden n-ten Datensatz.

Im Grunde handelt es sich um eine einfache Paginierungsimplementierung.

Verwandte Themen