java - 从 SQLite 从游标读取数据时发生致命异常

标签 java android sqlite android-cursor android-database

在 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 中进入 Debug模式并验证这一点。

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

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

关于java - 从 SQLite 从游标读取数据时发生致命异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16395392/

相关文章:

android.database.sqlite.SQLiteException : near ": syntax error (code 1): , 编译时:android 编程错误

java - 为什么在 finally block 中更改返回的变量不会更改返回值?

java - 从 Java 程序打开浏览器窗口

java - 尝试使用扫描仪读取 .txt 文件时文本丢失

java - Android 从自己的服务器自动更新

Android SQLite 数据库和日志权限

java - 如何使用Java实现华为分块文件上传

android - Flutter/Dart 静态变量丢失/不断重新初始化

java - 带有 JAR 文件的 JUnit NoClassDefFoundError

database - 从 SQLite 数据库 Android 填充 Spinner