在AsyncTask中,我这样读取数据库表(一对一):

Cursor result = database.query("country", new String[] { "_id", "name", "var1", "var2", "var3", "var4", "rightanswer", "time1", "time2", "time3" }, "_id=" + id, null, null, null, null);
result.moveToFirst();


然后,我打印result.getColumnCount()并收到10。

但是当我尝试打印这样的数据时:

 System.out.println(result.getString(result.getColumnIndex("name")));
 System.out.println(result.getString(result.getColumnIndex("var1")));
 System.out.println(result.getString(result.getColumnIndex("var2")));
 System.out.println(result.getString(result.getColumnIndex("var3")));
 System.out.println(result.getString(result.getColumnIndex("var4")));
 System.out.println(result.getString(result.getColumnIndex("rightanswer")));
 System.out.println(result.getString(result.getColumnIndex("time1")));
 System.out.println(result.getString(result.getColumnIndex("time2")));
 System.out.println(result.getString(result.getColumnIndex("time3")));


我收到错误AndroidRuntime(8279): FATAL EXCEPTION: AsyncTask #1

AndroidRuntime(8279): Caused by: java.lang.NullPointerException


但是,当我只打印两列时,

 System.out.println(result.getString(result.getColumnIndex("name")));
 System.out.println(result.getString(result.getColumnIndex("var1")));


完全正常。

我没有任何线索。

更新:

  String createQuery = "CREATE TABLE country (_id integer primary key autoincrement,name, var1, var2,var3,var4,rightanswer, time1,time2,time3);";
   db.execSQL(createQuery);

最佳答案

似乎价值

result.getString(result.getColumnIndex("var2"))


返回值为null。您可以在IDE中进入调试模式并进行验证。

另一种可能性是您的数据库中甚至没有名为var2的列。在这种情况下,getColumnIndex将返回null

如果您向我们提供了更多信息(如数据库架构),我们将为您提供更多帮助。

10-02 02:39
查看更多