你能帮我做这个吗?即使我知道数据库中存在数据,我也不知道为什么会出现空指针异常。我要做的是访问类中的一个方法,该方法用于获取数据库中给定报告代码的所有信息。但它不断给我空指针异常。这是我指的方法:
我通过这个调用不同类的方法:
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;
}
我试图在我的上传方法中添加它来访问数据库,但什么也没发生。我还需要做什么,如何检查我得到的上下文?
DatabaseHandler databaseHandler;
databaseHandler = new DatabaseHandler(this);
if (databaseHandler != null)
{
databaseHandler.close();
databaseHandler.createDB();
}