選択した人物の年齢を取得するために、Android アプリ内で単純な SQL コマンドを試しています。
public int getAge(){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM persons WHERE name =? " + MainActivity.selectedPerson.getText().toString(), null);
int age = cursor.getInt(3); // column with ages
cursor.close();
db.close();
return age;
}
しかし、アプリを実行すると、関数 getAge() を呼び出すとクラッシュします。次のエラーが表示されます。
SQLiteException: no such column: Max: , while compiling: SELECT * FROM persons WHERE name = Max
理解できません。表には「Max」という名前があります。私は何を間違っていますか?前もって感謝します。
編集2:これで:
Cursor cursor = db.rawQuery("SELECT name FROM persons WHERE name = '" + MainActivity.selectedPerson.getText().toString() + "'", null);
別のエラーが発生します。
08-27 19:43:47.573: E/AndroidRuntime(6161): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
これは何を意味するのでしょうか?