0
我在下面有PreparedStatement(ps),如下圖所示填充它,並執行MSSQL錯誤。當然,在任何可以看到的數據中都沒有「TRADEIN」的值。想法?PreparedStatement not populating
String update = "UPDATE IM_ITEM SET "
+ "LST_COST=?, PRC_1=?, IS_TXBL=?, TAX_CATEG_COD=?,CATEG_COD=?"
+ " WHERE ITEM_NO="+itemNo;
populate:
ps.setString(++i, q.get("LST_COST"));
ps.setString(++i, q.get("PRC_1"));
ps.setString(++i, q.get("IS_TXBL"));
ps.setString(++i, q.get("TAX_CATEG_COD"));
ps.setString(++i, q.get("CATEG_COD"));
debugged: "sqlCommand" and "userSQL" are still parameterized only
UPDATE IM_ITEM SET LST_COST=?, PRC_1=?, IS_TXBL=?, TAX_CATEG_COD=?, CATEG_COD=? WHERE ITEM_NO=101316
error:
Severe: com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting the varchar value 'TRADEIN' to data type int.
它似乎是由'q.get'返回的值中的一個,或者itemNo值包含字符串「TRADEIN」。 –
@DanGuzman 相信它不在兩個層面。我把它分成五個字符串,並使用這些字符串在ps上設置參數,並在executeUpdate之前確認所有五個字符串都沒有「TRADEIN」作爲值。兩個全部五個參數都是db中的varchar,所以它是不可思議的,它爲什麼要進行類型轉換。 –
嘗試使用setInt代替整數列的setString。這應該在客戶端而不是服務器上引發錯誤,以更好地確定錯誤值的設置位置。 –