2011-08-16 8 views
0

私の人生の間、このコードが動作しない理由を理解できません。それは私のアプリケーションの他の部分とまったく同じ形式に従っています。私は2つの属性をヘルパーメソッドに渡しています。これは問題ではないはずですが、私は問題の可能性がある行を返していますが、わかる!カーソルを使用している問題をアンドロイドから読むSQLite3データベース

私はこのコマンドを呼び出すまで動作するアクティビティを持っています。

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

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

ヘルパーメソッドを読んで、私はc.moveFirst()または何かをする必要があるされている唯一の1行がありますので、私はこのビーイングに傾いています。この

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; 

のように見えます。これを解決するのに役立つでしょうか。また、LogCatに書き込むこともできません。それはすぐに失敗するようですか???

PS。私は試しました 返信mDb.rawQuery(sql, null); 私は上記と同じことを信じています。

多くのおかげ マーク

答えて

1

あなたmDbHelperはnullです。それを初期化する。アプリをクラッシュさせる行をログで推測するのではなく、LogCatを使用する方法を学ぶと、本当に役立ちます。

+0

あなたはmdHelperの初期化を愚かに忘れてしまったのです。 c.close()を追加した後で終了カーソルエラーが発生しました。次に、範囲外のインデックスを持つエラーが発生しました。c.movefirst()がうまくいけばそれを試してみました。だから私はLogCatを使っているが、時にはそれが何であるかを理解していない。私は1行しか持たず、LogCatをどのくらいの規模のパンくずリストとして使用していました。ご協力いただきありがとうございます。 –

+0

ありがとうございます。私はその小さな問題に4時間しか費やしていません。あなたの助けをもう一度ありがとう。 –

+0

アプリケーションクラッシュ時にログキャップが空いている場合は、try/catchブロックが存在するかどうかをチェックし、それらを印刷しないで例外を呑み込まないようにしてください。また、デバッガは、例外を引き起こす行とnullを示す変数を表示して表示します。 – ernazm

関連する問題