2014-10-01 4 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 ????? 

이 오류를 받고, 거기 있어요 저자 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

관련 문제