在Android中的SQLIte DB中选择特定行

时间:2012-06-12 21:09:57

标签: android sqlite

我正在尝试根据textview中的字符串从数据库中选择一个特定的行。我运行它时的错误日志似乎表明它正在寻找一个列,但它应该寻找一行。错误日志显示:

    --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;
    }

方法写得不正确吗?如果是这样,如何正确编写它以查找包含bookname字符串的行?

1 个答案:

答案 0 :(得分:6)

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

KEY_BOOK + "=" + bkString

应该是

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

由于未引用字符串bkString,SQLite会尝试将其解释为列名称的标识符。