2014-02-11 61 views
-1

我試圖創造從表中檢索數據的方法,但我與光標一個問題:Android的數據庫和光標

public ArrayList<Contenu> getTest(){ 

    ArrayList<Contenu> test = new ArrayList<Contenu>(); 

    String query = new String("select valeur from table_contenu"); 
    Cursor c = bdd.rawQuery(query , null); 
    c.moveToFirst(); 
    while (c.moveToNext()) 
    { 
     Contenu contenu = new Contenu(); 
     contenu.setValeur(c.getString(c.getPosition())); // bug 
     test.add(contenu); 
    } 

    return test; 

日誌貓:

java.lang.IllegalStateException: Couldn't read row 1, col 1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 

回答

2

考慮到Artoo Detoo答案也應該做到以下幾點

更改此:

c.moveToFirst(); 
while (c.moveToNext()) 
{ 
... 
} 

對於這一點:

if(c != null) 
{ 
    c.moveToFirst(); 
    do 
    { 
     Contenu contenu = new Contenu(); 
     contenu.setValeur(c.getString(c.getColumnIndex("valeur"))); 
     test.add(contenu); 
    }while(c.moveToNext()); 
    c.close(); 
} 

如果沒有,你會被跳過第一行。

+0

你是對的,謝謝 – user3244162

2

見這個:

contenu.setValeur(c.getString(c.getPosition())); // bug 

應該是:

contenu.setValeur(c.getString(c.getColumnIndex("valeur"))); // NO MORE BUG 
+0

getPosition不需要String args – user3244162

+1

我編輯了我的拼寫錯誤。 –

+1

它與getColumnIndex一起工作,謝謝 – user3244162