从SQLite数据库检索数据并将其存储在数组中时,Android NullPointerException

时间:2013-09-08 12:37:10

标签: java android

我正在尝试从数据库中的列中检索字符串数据并插入到android中的字符串数组中。我使用以下代码来检索数据 - (helper.java)

public String[] personslist() {
                // TODO Auto-generated method stub
                int i=0;
                Cursor c=myDataBase.rawQuery("select PersonName from Persons;",null);
                String[] values = {};

            for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
                   values[i] = c.getString(c.getColumnIndex("PersonName"));
                   i++;
                }
            return values;


        }

我在“adapter.java”类中使用了以下代码来返回personslist()返回的数据。

public String[] plist() {
    // TODO Auto-generated method stub

    String[] persons = mDbHelper.personslist(); //this is line no. 131 in adapter class
    return persons;
}

当我运行应用程序时,它正在崩溃并显示以下错误

09-08 08:23:19.715: E/AndroidRuntime(29373): Caused by: java.lang.NullPointerException
09-08 08:23:19.715: E/AndroidRuntime(29373):    at com.example.fromstart.adapter.plist(adapter.java:131)

查询,当在sqlitebrowser上运行时,它返回四行四个人的名字。但是,在应用程序上运行时,它返回NullPointerException。你能告诉我,我可能出错了吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

mDbHelper为null。那是什么引发你的例外。确保它已初始化。

答案 1 :(得分:0)

检查初始化mDbHelper的位置。你正在做mDbHelpe.personslist()。在这里你的mDbHelper可能是空的,因此无效的异常。

答案 2 :(得分:0)

你做了类似的事情来初始化

吗?
Context context;
SQLiteDatabase db = null ;
CallDBHelper dbHelp = null;

       public Constructor(Context context) {
            this.context = context;
            dbHelp = new CallDBHelper(context);
            db = dbHelp.getWritableDatabase();
       }

       Cursor c = db.query(...