2013-05-06 76 views
0

讀取來自光標數據時在我的AsyncTask讀取數據庫表(一個接一個)這樣的:致命例外從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 – 2013-05-06 09:09:21

+1

顯示db.create查詢 – Blackbelt 2013-05-06 09:10:03

+1

哪一行會拋出NPE? – BobTheBuilder 2013-05-06 09:11:35

回答

1

看來,價值

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

回報是null。您可以在IDE中輸入調試模式並驗證。

另一種可能性是,您的數據庫中甚至沒有名爲var2的列。在這種情況下,getColumnIndex將返回null

如果您向我們提供更多信息,例如您的數據庫架構,我們可以爲您提供更多幫助。

+0

我檢查當然列名稱。然後,我檢查數據並填寫每一欄。 – JohnDow 2013-05-06 09:14:36