これで私を助けてもらえますか。データがデータベースに存在することを知っていても、なぜ 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();
}