2017-08-17 27 views
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. 
+1

它似乎是由'q.get'返回的值中的一個,或者itemNo值包含字符串「TRADEIN」。 –

+0

@DanGuzman 相信它不在兩個層面。我把它分成五個字符串,並使用這些字符串在ps上設置參數,並在executeUpdate之前確認所有五個字符串都沒有「TRADEIN」作爲值。兩個全部五個參數都是db中的varchar,所以它是不可思議的,它爲什麼要進行類型轉換。 –

+0

嘗試使用setInt代替整數列的setString。這應該在客戶端而不是服務器上引發錯誤,以更好地確定錯誤值的設置位置。 –

回答

0

Seanlange在聊天中回答,善良。