2011-12-20 25 views
3

我爲DB訪問做了一個準備好的聲明,儘管它的劑量工作..我不確定問題是什麼。任何人都可以找出我在準備好的聲明中做錯了什麼嗎?

它應該做的是取一個整數和一個字符串,並根據此更新數據庫。

這是代碼。 連接到數據庫本身的作品,這我知道,因爲我可以執行「正常」的陳述。

public void updateShipment(int shipmentNumber, String currentLocation) 
     throws SQLException { 

    String sql = "UPDATE shipments SET current_node=? WHERE shipment_id=?"; 
    con.setAutoCommit(false); 
    pre = con.prepareStatement(sql); 
    pre.setInt(1, shipmentNumber); 
    pre.setString(2, currentLocation); 
    pre.executeUpdate(); 
    con.commit(); 
    pre.close(); 
    con.setAutoCommit(true); 
} 
+3

定義「不工作」。 – 2011-12-20 17:28:06

+0

那麼,它會發送任何更新到數據庫。在sqlite中測試了sql本身,它的工作原理是盡力而爲,但沒有例外。 – keloch 2011-12-20 17:30:17

+0

你確切的問題是什麼?你遇到了什麼錯誤?嘗試通過配置JDBC驅動程序來記錄正在發送到數據庫的確切語句。 – lsoliveira 2011-12-20 17:30:57

回答

9

看起來像你得到參數1和2時,你把它們混合起來。您的意思是:

pre.setString(1, currentLocation); 
pre.setInt(2, shipmentNumber); 
+0

艾姆,這讓我有些尷尬......是的,現在有效。我怎麼會錯過這樣簡單的事情? :) 謝謝!!! – keloch 2011-12-20 17:34:25

5

你混的參數,這應該是正確的代碼

pre.setInt(2, shipmentNumber); 
pre.setString(1, currentLocation); 
相關問題