2

我正在尝试根据文本视图中的字符串从数据库中选择特定行。我运行它时的错误日志似乎说它正在寻找一列,但它应该寻找一行。错误日志说:

    --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 获取字符串的代码,然后运行一个应该以文本字符串形式返回文件名的方法,然后在第二个 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;
    }

那么方法写错了吗?如果是这样,如何正确编写它以查找包含书名字符串的行?

4

1 回答 1

7

我认为您在条件表达式中缺少单引号:

KEY_BOOK + "=" + bkString

应该

KEY_BOOK + "='" + bkString + "'"

由于该字符串bkString没有被引用,SQLite 尝试将其解释为列名的标识符。

于 2012-06-12T21:13:40.933 回答