0

我正在尝试从数据库中的列中检索字符串数据并插入到 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。你能建议我吗,我可能哪里出错了?

提前致谢。

4

3 回答 3

1

mDbHelper 为空。这就是引发异常的原因。确保它被初始化。

于 2013-09-08T12:38:55.657 回答
0

检查您在哪里初始化 mDbHelper。您正在执行 mDbHelpe.personslist()。在这里你的 mDbHelper 可能是 Null 和 nullpointer 异常。

于 2013-09-08T12:43:26.973 回答
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(...
于 2013-09-08T13:07:32.263 回答