2010-12-22 29 views
6

我是一個android新手,我的遊標有問題。用我不能訪問數據: cursor.get(cursor.getColumnIndex(columnName));Android getColumName和getColumnIndex

我嘗試下面的代碼來測試一個錯誤:

while (cursor.moveToNext()) { 
     int x = 2; 
     Log.i("MyDebug", "Index: " + x); 
     Log.i("MyDebug", "Name: " + cursor.getColumnName(x)); 
     Log.i("MyDebug", "Index again: " + cursor.getColumnIndex(cursor.getColumnName(x))); 
    } 

結果從調試監視器:

Index: 2 
Name: mainMenu.title 
Index again: -1 

應該不是「再次索引」的結果是2?我究竟做錯了什麼?

回答

3

cursor.getColumnIndex()預計該列的名稱,沒有表的名稱:

cursor.getColumnIndex("mainMenu.title"); // -1 
cursor.getColumnIndex("title"); // 2 
+0

我試過,但它不起作用。我得到兩種情況-1!當我使用cursor.getString(2)時,我得到了正確的結果,所以光標本身沒有問題。 – Mokus 2010-12-23 09:35:32

0

我也有類似的問題,並通過給我列的別名在我的相當複雜的查詢解決它,然後我用這些別名作爲參考,例如: 我查詢的開始:

SELECT lith.drill_id, lith.depth_from, 
... 
... 

cursor.getColumnIndex("depth_from") gave -1

然後我說柱阿里ases:

SELECT lith.drill_id AS drill_id, lith.depth_from as depth_from, 
... 
... 

cursor.getColumnIndex("depth_from")然後給出正確的值。