Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的数据库空指针异常_Android_Nullpointerexception_Android Sqlite - Fatal编程技术网

android中的数据库空指针异常

android中的数据库空指针异常,android,nullpointerexception,android-sqlite,Android,Nullpointerexception,Android Sqlite,你能帮我做这个吗。我不知道为什么我得到空指针异常,即使我知道数据存在于数据库中。我试图做的是访问类中的一个方法,该方法用于获取数据库中给定报表代码的所有信息。但它一直给我空指针异常。以下是我所指的方法: 我通过这个调用不同类的方法: S_9th_ISubmit a=新S_9th_ISubmit() a、 上传() 这就是我正在调用的方法 public void Uploading() { for (int i = 0; i < Constants.ARRAYLIST_REPORTCOD

你能帮我做这个吗。我不知道为什么我得到空指针异常,即使我知道数据存在于数据库中。我试图做的是访问类中的一个方法,该方法用于获取数据库中给定报表代码的所有信息。但它一直给我空指针异常。以下是我所指的方法:

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

    S_9th_ISubmit a=新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));
    
    下面是我的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();
            }
    

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

    尝试检查您正在传递的上下文。

    游标详细信息=databaseHandler.getHeaderDetails(代码)显示空点

    问题是databaseHandler为null,您可以使用

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

    如果getHeaderDetails()中出现问题,logcat将显示导致空点异常的代码行,但我看不到S_9th_ISubmit.java的1137行上有什么?show code
    DatabaseHandler.getHeaderDetails()
    这是1137行游标详细信息=DatabaseHandler.getHeaderDetails(代码)的内容@瓦伦:我已经更新了我的帖子。DatabaseHandler中437行是什么?谢谢你给我这个好主意。由于上下文错误,我出错了。
    Cursor details;
    if(databaseHandler != null){
        details = databaseHandler.getHeaderDetails(code);
    }else{
        Log.e(" databaseHandler : " ," databaseHandler == null");
    }