2012-01-15 50 views
0

我有這樣的代碼:的Android SQLite的查詢與「WHERE」選擇論不工作

if (idListe.size()>0) 
     { 
     strIdArray = new String[idListe.size()]; 
     idListe.toArray(strIdArray); 
//my query starts here 
     c = dbHelper.query(true, DataBaseHelper.DB_COURSE, 
       dbHelper.COURSE_TABLE_AUFGABEN, new String[] { 
       dbHelper.COURSE_AUFGABEN_COLUMN_ID, 
       dbHelper.COURSE_AUFGABEN_COLUMN_ADRESSID, 
       dbHelper.COURSE_AUFGABEN_COLUMN_KURSART }, dbHelper.COURSE_AUFGABEN_COLUMN_ID + " = ?",strIdArray, 
       dbHelper.COURSE_AUFGABEN_COLUMN_KURSART, null, 
       dbHelper.COURSE_AUFGABEN_COLUMN_KURSART + " ASC", null); 
     startManagingCursor(c); 
     } 

並獲得了這個錯誤:

01-15 13:01:27.489: E/AndroidRuntime(703): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x3fd490

我試過幾種組合,結果總是保持一樣。如果strIdArray的大小爲'1',則查詢起作用。我在這裏做錯了什麼?

回答

1

If the size of the strIdArray is '1' the query works. What am I doing wrong here?

你只有一個?而在strIdArray的大小大於1時提供了幾個參數。

+0

這很有道理。但是我怎樣才能在代碼中編寫多個? 我將不得不做一個非常大的字符串: for(String t:strIdArray)... dbHelper.COURSE_AUFGABEN_COLUMN_ID +「=?」 然後最後將字符串t設置爲我的where子句。那是對的嗎?這將是一個非常奇怪的做法... – ezcoding 2012-01-15 12:56:21

+0

你的回答是正確的。我用我的方法,並製作了一個大字符串,它的工作原理!謝謝 – ezcoding 2012-01-15 13:07:50

0

此代碼片段沒有太多解釋,因爲它使用了一些(德語)第三方庫並隱藏了實際的查詢。

但是,如果相關,則可以嘗試this solution

如果您可以提供有關實際查詢的更多詳細信息,那將會更容易。

+0

我編輯了代碼。我希望它能夠澄清代碼。我去過你發佈的鏈接,但它不能幫助我,因爲我沒有使用rawquery – ezcoding 2012-01-15 12:53:07