2012-10-14 68 views
0

是否有可能使用2個不同的遊標選擇表:光標 - 安卓

這對錶1

Cursor b = myDbHelper.getSchoolType(); 
String def = b.getString(0); 

這對於另一個表

c = myDbHelper.getAllSchoolData(); 
String abc = c.getString(0); 

我嘗試檢索數據從兩個表使用兩個光標,但它顯示錯誤:

android.database.CursorIndexOutOfBoundsException : Index -1 requested, with a size of 2 

請幫助... 感謝所有種回答

回答

1

默認情況下,鼠標指針指向第一個條目(行)之前的位置,所以你需要把它移動到合適的位置,你可以讀取數據之前從中。例如移動到第一個條目:

if(cursor != null && cursor.moveToFirst()) 
    String value = cursor.getString(0); 
    ... 
} 

有喜歡使用MoveToNext類似的方法(),moveToLast()等,看到reference page更多。

+0

感謝您的回答.....但它是2個不同的光標。 –

+0

我不知道我是否得到它。如果在你的代碼中b和c是兩個Cursor對象,它們應該是相互獨立的,所以你應該檢查它們是否爲null並分別移動它們的光標指針。 –

+0

我的意思是你可以有兩個Cursor對象,這兩個Cursor對象是由兩個不同表中的兩個查詢操作創建的,那麼你應該檢查它們是否爲null,並分別像這樣移動它們的光標指針,然後才能從中讀取數據:「if(b! = null && b.moveToFirst()){//在這裏您可以從b}中獲取數據「和」if(c!= null && c.moveToFirst()){//這裏您可以從c獲取數據}「。 –

0

Cursor索引被置於-1時被取回。您需要將其移至第一個結果。爲此,您有不同的選擇,但這是我使用它的方式:

Cursor c = // Retreive your cursor; 
if (c != null) { 
    while(c.moveToNext()) { 
     // Code for each row 
    } 
} 

這將遍歷所有遊標行。

您應該始終閱讀Android tutorials或檢查SDK reference。學習閱讀文檔是程序員的基本技能。