2014-09-18 36 views
1

我試圖從SQLIte數據庫檢索數據與where子句和使用按鈕單擊事件。這是我DbControler方法從SQLite數據庫Android搜索與where子句非法參數異常

public ArrayList<HashMap<String, String>> searchUser(String title){ 


    ArrayList<HashMap<String, String>> usersList; 
    usersList = new ArrayList<HashMap<String, String>>(); 
    String selectQuery = "SELECT * FROM books WHERE bookTitle ='?' "; 

    SQLiteDatabase database = this.getWritableDatabase(); 
    Cursor cursor = database.rawQuery(selectQuery, new String[]{title.toString()}); 
    if (cursor.moveToFirst()) { 
     do { 
      HashMap<String, String> map = new HashMap<String, String>(); 
      map.put("bookAccession", cursor.getString(0)); 
      map.put("bookTitle", cursor.getString(1)); 
      map.put("bookEdition", cursor.getString(2)); 
      map.put("bookISBN", cursor.getString(3)); 
      map.put("bookType", cursor.getString(4)); 
      map.put("bookAvailab", cursor.getString(5)); 
      map.put("bookPublisher", cursor.getString(6)); 
      map.put("bookAuther", cursor.getString(7)); 
      map.put("bookcategory", cursor.getString(8)); 

      usersList.add(map); 
     } while (cursor.moveToNext()); 
    } 
    database.close(); 
    return usersList; 
} 

,並即時得到下面的錯誤日誌貓檢索符合條件的數據

java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters. 
    at android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212) 
    at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:166) 
    at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200) 
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 
    at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 
    at com.example.captchalib.DBController.searchUser(DBController.java:92) 
    at com.example.captchalib.TestSearch$1.onClick(TestSearch.java:57) 
    at android.view.View.performClick(View.java:4084) 

請幫我這個

回答

0

兩件事情,第一嘗試從= '?' 刪除單引號

其次,您不必做title.toString()。它已經是一個字符串...