我有一個(gè)接受連接的通用 API。似乎其中一個(gè)調(diào)用者傳遞了一個(gè)連接,該prepareCall連接返回一個(gè) 類型的對(duì)象NewProxyCallableStatement。下面的代碼然后失?。篠QLServerCallableStatement stmt = (SQLServerCallableStatement) connection.prepareCall(sprocSQL);API 調(diào)用者看到的完整異常是:java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyCallableStatement cannot be cast to com.microsoft.sqlserver.jdbc.SQLServerCallableStatement我需要使用,SQLServerCallableStatement因?yàn)槲艺谡{(diào)用一個(gè)帶有類型輸入?yún)?shù)的存儲(chǔ)過程TABLE,并且SQLServerCallableStatement有一個(gè)setStructured允許構(gòu)造表類型變量的方法。
1 回答

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
解決方案是使用下面的代碼:
SQLServerCallableStatement?stmt?=?connection.prepareCall(sprocSQL).unwrap(com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.class);
如果您使用的是 c3p0,則需要使用已unwrap
修復(fù)錯(cuò)誤的版本。我用c3p0-0.9.5.2
.
參考:?unwrap方法(SQLServerCallableStatement)
添加回答
舉報(bào)
0/150
提交
取消