質問

In AsyncTask I read database table (one-by-one) like this:

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

Then, I print result.getColumnCount() and receive 10.

But when I trying to print data like this:

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

I receive error AndroidRuntime(8279): FATAL EXCEPTION: AsyncTask #1

AndroidRuntime(8279): Caused by: java.lang.NullPointerException

But, when I print only two first columns,

 System.out.println(result.getString(result.getColumnIndex("name")));
 System.out.println(result.getString(result.getColumnIndex("var1")));

It's fully working.

I have no clue.

UPDATE:

  String createQuery = "CREATE TABLE country (_id integer primary key autoincrement,name, var1, var2,var3,var4,rightanswer, time1,time2,time3);";                 
   db.execSQL(createQuery); 
役に立ちましたか?

解決

It seems that the value

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

returns is null. You can enter debug mode in your IDE and verify that.

Another possibility is that you don't even have a column named var2 in your database. In that case the getColumnIndex will return null.

If you provide us more information like your db schema we can help you more.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top