テキストビューの文字列に基づいて、データベースから特定の行を選択しようとしています。実行したときのエラーログには、列を検索しているように見えますが、行を検索しているはずです。エラーログには次のように記載されています。
--I/Database(279): sqlite returned: error code = 1, msg = no such column: Book
--D/AndroidRuntime(279): Shutting down VM
--W/dalvikvm(279): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
--E/AndroidRuntime(279): FATAL EXCEPTION: main
--E/AndroidRuntime(279): android.database.sqlite.SQLiteException: no such column: Book: , while compiling: SELECT book, background FROM bookbackgrounds WHERE book=Book
これは、テキストビューから文字列を取得し、テキスト文字列の形式でファイル名を返すことになっているメソッドを実行し、返された文字列を2番目のテキストビューに表示するコードです。
String bkString = showBooktextview.getText().toString();
bga.open();
String newBKstring = bga.getBGforBook(bkString);
bga.close();
showDBBooktextview.setText(newBKstring);
これが、その本の名前の列がないというエラーの方法です。(その本の名前を含む行を探すことになっています):
public String getBGforBook(String bkString) {
String[] thecolumns = new String[] { KEY_BOOK, KEY_BACKGROUND };
Cursor cursor = db.query(DB_TABLE, thecolumns, KEY_BOOK + "=" + bkString, null, null, null, null);
String result = "";
if (cursor != null){
cursor.moveToFirst();
result = result
+ cursor.getString(1);
}
return null;
}
それで、メソッドは間違って書かれていますか?もしそうなら、それが本名の文字列を含む行を探すようにそれを正しく書く方法は?