2011-08-16 71 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