2014-04-04 34 views
0

我有以下功能:Java參數索引超出範圍(2>參數的數量,這是1)

public void updateItem(String id, String name, String quantity, String price){ 
    String query = "UPDATE items SET name = '?', price = ?, quantity = ? WHERE id = ?"; 
    try(PreparedStatement st = conn.prepareStatement(query)){ 
     st.setString(1, name); 
     st.setString(2, quantity); 
     st.setString(3, price); 
     st.setString(4, id); 
     JOptionPane.showMessageDialog(null, "Item Updated"); 
    }catch(Exception ex){ 
     JOptionPane.showMessageDialog(null, ex); 
    } 
} 

但每當我嘗試運行它,它給了我下面的錯誤:

Parameter Index Out Of Range (2 > number of parameters, which is 1) 

我正在閱讀有關此錯誤,它與問號有關,但我不確定錯誤的確切位置。如果有人能幫助我,我會非常感激。

這是我的第二篇文章,很抱歉,如果這在某些方面不正確。

再次感謝大家!

+0

爲什麼你的一些佔位符有'''而其他的不佔? –

+0

如果我拿出單引號並嘗試運行它MySql給我以下錯誤:'#1054 - 未知列'我的名字'在'字段列表'中 –

+0

你能告訴我們的實現或至少你給的信息關於'PreparedStatement.setString'? – ASKASK

回答

1

需要兩個變化(即我可以看到),

name = '?' 

應該

name = ? 

而且,你是不是真正執行在發佈代碼的聲明。

+0

謝謝,我剛剛看到。是的,我錯過了查詢執行。再次感謝:D。 –

相關問題