我有下表,它工作正常:

    public static final String BookID           = "books_ID";
    public static final String Book             = "books";
    public static final String Author           = "Authors";
    private static final String BookAuthor_TABLE    = bookAuthor_Table";
    private static final String[] BookAuthor_AllKeys = new String[] { BookID, Book, Author };
    private static final String BookAuthor_CREATE   =
     "CREATE TABLE " + BookAuthor_TABLE + "("+
                                    BookID + " INTEGER PRIMARY KEY," +
                                    Book + " TEXT," +
                                    Author + " TEXT)";

......

......


    public ArrayList<String> getSpecificColumn(String book) {
        ArrayList<String> AUTHOR_ARRAYLIST;
        AUTHOR_ARRAYLIST = new ArrayList<String>();

        db = getWritableDatabase;
        String WHERE = Book + "=" + book;
        Cursor cursor = db.query(BookAuthor_TAB, BookAuthor_AllKeys, WHERE, null, null, null, null);

        while(cursor.moveToNext())
        {
            String AUTHOR = cursor.getString(cursor.getColumnIndex(Author));
            AUTHOR_ARRAYLIST.add(AUTHOR);
        }

        return AUTHOR_ARRAYLIST;
    }


主要活动:

String book = “Jeff Jordan”
AUTHOR_ARRAY = MySQLITE_DATABASE.getSpecificColumn(book);
System.out.println(AUTHOR_ARRAY);


为什么我会收到此错误

(1) no such column: Jeff Jordan ?????


我检查了表,在“作者”列中有“杰夫·乔丹”。

我做错了什么?

非常感谢

最佳答案

字符串文字应在'single quotes'中,否则将被用作标识符,例如列名。

不过,最好使用?参数:

String WHERE = Book + "=?";
Cursor cursor = db.query(BookAuthor_TAB, BookAuthor_AllKeys,
    WHERE, new String[] { book },
    null, null, null);

08-18 08:45
查看更多