gpt4 book ai didi

android - android中的数据库空指针异常

转载 作者:搜寻专家 更新时间:2023-11-01 08:56:09 24 4
gpt4 key购买 nike

你能帮我解决这个问题吗?我不知道为什么我会收到空​​指针异常,即使我知道数据存在于数据库中。我想做的是访问类中的一个方法,该方法用于获取数据库中给定报告代码的所有信息。但它一直给我空指针异常。这是我指的方法:

  • 我通过这个调用不同类的方法:

    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)

这是我的数据库处理程序中的代码

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();
}

最佳答案

我的猜测是在 SQLiteDatabase dbSqlite = this.getReadableDatabase(); 中,dbSqlite 为空!getReadableDatabase() 返回 null,因为您传递了错误的上下文。
尝试检查您传递的上下文。

关于android - android中的数据库空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18753617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com