【问题标题】:Fatal exception when reading data from cursor from SQLite从 SQLite 从游标读取数据时出现致命异常
【发布时间】:2013-04-30 00:15:07
【问题描述】:

在 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); 

【问题讨论】:

  • 'var2' 可能返回 null
  • 显示 db.create 查询
  • 哪一行抛出 NPE?
  • 可能是“var2”列中没有字符串值
  • 显示整个堆栈跟踪!

标签: java android sqlite android-cursor android-database


【解决方案1】:

好像值了

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

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

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

如果您向我们提供更多信息,例如您的数据库架构,我们可以为您提供更多帮助。

【讨论】:

  • 我当然会检查列名。然后,我检查数据并填写每一列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
相关资源
最近更新 更多