2014-07-17 31 views
7

當執行下面的函數時,我得到上面的IllegalArgumentException。我沒有得到的是,當我運行調試器時,變量顯然只包含4個參數,因爲它應該。綁定參數太多。提供了5個參數,但聲明需要4個參數

所以...

(1)這個神祕的第五個參數來自哪裏?

(2)我應該如何找到這個錯誤?

db.update(
    UppdragEntry.TABLE_NAME, 
    values, 
    selection, 
    selectionArgs); 
+0

*選擇*包含以下內容:字符串選擇=「_id」; String [] selectionArgs = {「=」+ personId}; – abc32112

回答

34

選擇包含以下內容:串選擇= 「_id」; String [] selectionArgs = {「=」+ personId};

你有selectionArgs值,但在selection沒有?佔位符它。

將其更改爲

String selection = "_id = ?"; 
String[] selectionArgs = { "" + personId }; 

的方法構建一個SQL字符串。提供的ContentValues被構建爲?佔位符和綁定參數。其他選擇參數也作爲綁定參數提供,它們必須與相同數量的?佔位符匹配。

+0

作品,謝謝! – abc32112

+1

我有嗎?在selectionArgs中,但在字符串轉換的情況下?變成'?'這是一個錯誤。 –

+0

好吧,在selectionArgs中添加String.valueOf(personId)好多了。 – SanchelliosProg

相關問題