你能帮我这个忙吗?我不知道为什么我会得到空指针异常,即使我知道数据库中存在数据。我想做的是访问一个类中的方法,该方法用于获取数据库中给定报告代码的所有信息。但是它一直在给我空指针异常。这是我指的方法:
我通过这个来调用不同类的方法:
S_9th_ISubmit a =新的S_9th_ISubmit();
a.Uploading();
这是我打电话的方法
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();
}
我的猜测是SQLiteDatabase dbSqlite = this.getReadableDatabase();
,dbSqlite为空!getReadableDatabase()返回null,因为您传递了错误的上下文。
尝试检查您传递的上下文。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句