0

AsyncTask では、次のようにデータベース テーブルを (1 つずつ) 読み取ります。

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

しかし、最初の2列だけを印刷すると、

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

それは完全に機能しています。

私は見当もつかない。

アップデート:

  String createQuery = "CREATE TABLE country (_id integer primary key autoincrement,name, var1, var2,var3,var4,rightanswer, time1,time2,time3);";                 
   db.execSQL(createQuery); 
4

1 に答える 1

1

どうやら値は

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

返品はご遠慮nullください。IDE でデバッグ モードに入り、それを確認できます。

var2もう 1 つの可能性は、データベースに名前が付けられた列さえないことです。その場合、getColumnIndexは を返しnullます。

データベース スキーマなどの詳細情報を提供していただければ、より多くの情報を提供できます。

于 2013-05-06T09:12:12.327 に答える