2014-10-01 237 views
1

我有以下表和它的正常工作:如何从SQLite数据库的特定行中获取值?

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

MainActivity:

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

为什么会出现这个错误

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

我检查表,并有是“杰夫·乔丹”的专栏作者。

我做错了什么?

非常感谢

回答

4

字符串文本应该在'single quotes'否则他们被当作标识,如列名。

它甚至更好,使用?参数虽然:

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

耶稣基督,我快要哭了。我花了很多时间在网上搜索并进行故障排除,但从未奏效。你真的帮了我很多。非常感谢!对此,我真的非常感激 – User2014 2014-10-01 12:57:06

相关问题