سؤال

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