2013-05-06 5 views
0

В 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); 
+0

Он может возвращать значение «var2» null –

+1

показать запрос db.create – Blackbelt

+1

Какая строка выбрасывает NPE? – BobTheBuilder

ответ

1

кажется, что значение

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

возвращается в null. Вы можете войти в режим отладки в своей среде IDE и убедиться в этом.

Другая возможность заключается в том, что в вашей базе данных даже нет столбца с именем var2. В этом случае getColumnIndex вернет null.

Если вы предоставите нам больше информации, такой как ваша схема db, мы можем вам помочь.

+0

Я проверяю названия колонок, конечно. Затем я проверил данные и заполнил каждый столбец. – JohnDow

Смежные вопросы