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、 上传()
- 这就是我正在调用的方法
下面是我的databaseHandler中的代码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));
我试图在我的上传方法中添加这个来访问数据库,但是什么都没有发生。我还需要做什么,如何检查我得到的上下文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
这是1137行游标详细信息=DatabaseHandler.getHeaderDetails(代码)的内容@瓦伦:我已经更新了我的帖子。DatabaseHandler中437行是什么?谢谢你给我这个好主意。由于上下文错误,我出错了。DatabaseHandler.getHeaderDetails()
Cursor details; if(databaseHandler != null){ details = databaseHandler.getHeaderDetails(code); }else{ Log.e(" databaseHandler : " ," databaseHandler == null"); }