2
我想從基於字符串的textview中的數據庫中選擇特定的行。我運行它時的錯誤日誌似乎表示它正在尋找一個列,但它應該在尋找一行。錯誤日誌說:在Android中選擇SQLIte DB中的特定行
--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
在此處,它從TextView的字符串代碼,然後運行是應該在一個文本字符串的形式返回文件名的方法,然後顯示在返回的字符串第二個文本視圖:
String bkString = showBooktextview.getText().toString();
bga.open();
String newBKstring = bga.getBGforBook(bkString);
bga.close();
showDBBooktextview.setText(newBKstring);
以下是錯誤表示沒有該書名稱的列的方法。 (它應該是尋找包含該書名的ROW):
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;
}
那麼方法寫錯了嗎?如果是這樣,如何正確編寫它,以便它查找包含書名字符串的行?
添加單引號似乎使Eclipse完全忽略該方法,但它不會使應用程序崩潰。 – kirktoon1882
@ kirktoon1882你是什麼意思「忽略方法」?它沒有回報你所期望的嗎?這可能是因爲你以任何方式返回null;你應該返回'result'。 – dasblinkenlight
SWEET!你的修復工作!我並不感到驚訝,你有50.4k代表,顯然不是像我這樣的新人!好吧,所以你的評論是正確的,我是返回null,而不是「結果」。所以看起來這個方法沒有做任何事情,但是它在工作,而且它什麼也沒有返回。再次感謝!你的規則! – kirktoon1882