В AsyncTask я прочитал таблицы базы данных (один за другим), как это:Fatal исключение при чтении данных из курсора из SQLite
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")));
Это полностью работает.
У меня нет подсказки.
UPDATE:
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 – Blackbelt
Какая строка выбрасывает NPE? – BobTheBuilder