2011-08-16 74 views
0

我不能爲我的生活算出爲什麼這段代碼不工作。它的格式與我的應用程序的其他部分完全相同,除了我將兩個屬性傳遞給helper方法,這不應該是一個問題,我只返回一行可能是問題,但如果是這樣,我不會理解!使用光標讀取的問題從android sqlite3數據庫中讀取

我有一個活動,直到我打電話給這個命令。

Log.d("Testing","Testing: " + cardID + " " + cardTypeID); 
//LogCat displays the right values 11 1 

Cursor c = mDbHelper.fetchCard(cardID,cardTypeID); // <--COMMAND 

輔助方法看起來像這樣

public Cursor fetchCard(String cardID,String cardTypeID) { 
    String sql = "SELECT teamName FROM tbl_team JOIN tbl_card ON tbl_team.teamID = tbl_card.teamID WHERE cardID=" + cardID; 
    //This returns 1 row when run in a SQLite Database Browser 

    Log.d("Testing","Testing :" + cardID + " " + cardTypeID); 
    // Program has crashed before this Log 
    // Caused by: java.lang.NullPointerException 

    Cursor c; 
    c = mDb.rawQuery(sql, null); 

    return c; 

我傾向於這之中,因爲只有一個已讀行,我需要做一個c.moveFirst()什麼的。會幫助解決這個問題。另外爲什麼我不能寫任何LogCat。它似乎馬上失敗?

PS。我試過 return mDb.rawQuery(sql, null); 我認爲這與上面相同。

非常感謝 馬克

回答

1

mDbHelper爲空。初始化它。學會使用LogCat而不是用日誌猜測崩潰應用程序的行,它確實有幫助。

+0

你是對的我愚蠢地錯過了mdHelper初始化。如果添加了c.close()之後出現了一個關閉遊標錯誤,那麼現在已經嘗試過c.movefirst()會有希望進入它的底部。所以我使用LogCat,但有時不明白它是什麼。我只有1行,正在使用LogCat作爲一種麪包屑,就像得到了多少。謝謝你的幫助。 –

+0

是的,它終於有效。那麼我只花了4小時在這個小問題上。再次感謝你的幫助。 –

+0

如果您在應用程序崩潰時有空的logcat,請檢查您的try/catch是否阻止並確保您不會吞下任何例外而不打印它們。此外,調試器可以幫助並向您顯示導致異常的行和空變量。 – ernazm