2010-06-24 46 views
4

我有一個查詢,(我使用rawQuery()的Android SQLite的查詢和使用遊標來處理多行

SELECT * FROM <table> 

然後我存儲它返回使用遊標。從我們想要做的是,從第一行開始,所以.. cursor.moveToFirst()然後逐列,逐列,並將其特定值存儲在變量中。然後我想進入下一行並執行相同的操作。所以我想我的問題是如何獲得遊標來處理多列?

感謝,

回答

14

我可能失去了一些東西,你會不會有一個嵌套的循環。

外環循環通過每個記錄:

while (cursor.moveToNext()) { 
    ... 
    // inner loop here 
    ... 
} 

和內將循環週期通過每個柱

for (i=0; i<cursor.getColumnCount(); i++) { 
    ... 
    String var1 = cursor.getString(i); 
    ... 
} 
+3

我知道這是已經接受,但是一個'做{}而(光標.moveToNext());'效果更好,因爲如果您先檢查.moveToNext,則跳過第一條記錄...從經驗中學習... – AndyD273 2010-07-02 16:09:55

+4

Are you sure?返回時光標通常位於-1位置,調用moveToNext()會將其移動到第一行。 此外,使用您的邏輯,do {}中的代碼塊將始終執行至少一次,即使該遊標不包含任何記錄。 – 2010-07-05 08:44:14