データベースにレコードがあるにもかかわらず、データベースが null を返す
private static final String DATABASE_NAME="PlayGamesdb";
private static final String DATABASE_TABLE="peopleTable";
public int fetchPlacesCount() {
int count = 0;
//String[] columns = new String[] {KEY_ROWID, KEY_NAME, KEY_HITS };
Cursor c = ourDatabase.rawQuery("SELECT COUNT(*) from DATABASE_TABLE", null);
c.moveToFirst();
count = c.getInt(0);
return count;
}
何が間違っているかについてのアイデアはありますか?
01-24 19:30:23.050: E/AndroidRuntime(1761): FATAL EXCEPTION: main
01-24 19:30:23.050: E/AndroidRuntime(1761): java.lang.NullPointerException
01-24 19:30:23.050: E/AndroidRuntime(1761): at com.example.dbsample.PlayGame.fetchPlacesCount(PlayGame.java:93)
01-24 19:30:23.050: E/AndroidRuntime(1761): at com.example.dbsample.SQLiteExample.onClick(SQLiteExample.java:123)
01-24 19:30:23.050: E/AndroidRuntime(1761): at android.view.View.performClick(View.java:3511)
これは、他のクラスで fetchPlacesCount メソッドを呼び出すために使用される onclick です。
case R.id.bSQLnumberofrows:
int x = 0;
PlayGame ec = new PlayGame(this);
ec.open();
x = ec.fetchPlacesCount();
ec.close();
sqlRow.setText(x);
break;
編集:
問題を修正した後、以下のコードが機能するようになり、トースト メッセージとして正しい行数が表示されるようになりました。そのため、1 つの問題が修正され、さらに 1 つの問題が修正されました。この textView の何が問題なのかを確認するために、次に取り組むのはこれです。
Toast メッセージを使用することは、メソッドが正しい番号を返していることを確認する良い方法でした。
public int fetchPlacesCount() {
int count = 0;
Cursor q = ourDatabase.rawQuery("SELECT COUNT(*) from " + DATABASE_TABLE, null);
q.moveToFirst();
count = q.getInt(0);
return count;
}
int 他のクラス
case R.id.bSQLnumberofrows:
PlayGame ec = new PlayGame(this);
ec.open();
int x = ec.fetchPlacesCount();
ec.close();
// sqlRow.setText(x);
Toast.makeText(SQLiteExample.this, "value of x " + x , Toast.LENGTH_SHORT).show();
break;