2

これで私を助けてもらえますか。データがデータベースに存在することを知っていても、なぜ null ポインター例外が発生するのかわかりません。私がやろうとしているのは、クラス内のメソッドにアクセスすることです。そのメソッドは、データベース内の特定のレポート コードのすべての情報を取得するためのものです。しかし、ヌルポインタ例外が発生し続けます。これが私が言及している方法です:

  • 私はこれを通して別のクラスのメソッドを呼び出しています:

    S_9th_ISubmit a = new S_9th_ISubmit();

    a.アップロード中();

  • これは私が呼んでいる方法です

    public void Uploading()
    {
    
    for (int i = 0; i < Constants.ARRAYLIST_REPORTCODES.size(); i++) 
    {
        Log.d("size:", String.valueOf(Constants.ARRAYLIST_REPORTCODES.size()));
        Log.d("content", String.valueOf(Constants.ARRAYLIST_REPORTCODES));
    
        final String code = Constants.ARRAYLIST_REPORTCODES.get(i).toString();
        Log.d("Uploading contents of Report Code: ", code);
    
        Cursor details = databaseHandler.getHeaderDetails(code);
    
    
        final String infotype   = details.getString(details.getColumnIndex(Constants.REPORT_INFOTYPECODE));
        String district         = details.getString(details.getColumnIndex(Constants.REPORT_DISTRICTCODE));
        final String province   = details.getString(details.getColumnIndex(Constants.REPORT_PROVINCECODE));
        final String date       = details.getString(details.getColumnIndex(Constants.REPORT_DATEOBSERVED));
        final String competitor = details.getString(details.getColumnIndex(Constants.REPORT_ISCOMPETITOR));
        final String remarks    = details.getString(details.getColumnIndex(Constants.REPORT_REMARKS));
    

    }

データベースにアクセスするには、データベースを開く必要がありますか? 以下は私のlogcatを示しています。

09-12 08:43:52.250: E/AndroidRuntime(14919): FATAL EXCEPTION: main
09-12 08:43:52.250: E/AndroidRuntime(14919): java.lang.NullPointerException
09-12 08:43:52.250: E/AndroidRuntime(14919):    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
09-12 08:43:52.250: E/AndroidRuntime(14919):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:149)
09-12 08:43:52.250: E/AndroidRuntime(14919):    at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:223)
09-12 08:43:52.250: E/AndroidRuntime(14919):    at com.dfd.ireport.DatabaseHandler.getHeaderDetails(DatabaseHandler.java:437)
09-12 08:43:52.250: E/AndroidRuntime(14919):    at com.dfd.ireport.S_9th_ISubmit.Uploading(S_9th_ISubmit.java:1137)

ここに私のdatabaseHandlerのコードがあります

public Cursor getHeaderDetails(String code){
    SQLiteDatabase dbSqlite = this.getReadableDatabase();
    Cursor c = dbSqlite.query(Constants.TABLE_REPORT, new String[] { Constants.REPORT_ID, 
            Constants.REPORT_CODE, 
            Constants.REPORT_INFOTYPECODE, 
            Constants.REPORT_DISTRICTCODE, 
            Constants.REPORT_PROVINCECODE, 
            Constants.REPORT_DATEOBSERVED,
            Constants.REPORT_ISCOMPETITOR, 
            Constants.REPORT_REMARKS}, Constants.REPORT_CODE+"=?", new String[]{code}, null, null, null);
    if (c != null) {
        c.moveToFirst();
    }
    dbSqlite.close();
    return c;
}

データベースにアクセスするために Uploading メソッドにこれを追加しようとしましたが、何も起こりませんでした。他に何をする必要がありますか?

 DatabaseHandler databaseHandler;
        databaseHandler = new DatabaseHandler(this);
        if (databaseHandler != null)
        {
            databaseHandler.close();
            databaseHandler.createDB();
        }
4

2 に答える 2

0

カーソルの詳細 = databaseHandler.getHeaderDetails(code) は null ポイントを示します。

問題は、databaseHandler が null であることです。

Cursor details;
if(databaseHandler != null){
    details = databaseHandler.getHeaderDetails(code);
}else{
    Log.e(" databaseHandler : " ," databaseHandler == null");
}

getHeaderDetails() の問題が発生した場合、logcat は null ポイント例外を引き起こすコード行を表示しますが、表示されません

于 2013-09-12T01:59:48.457 に答える