我有一個接受連接的通用 API。似乎其中一個調用者傳遞了一個連接,該prepareCall連接返回一個 類型的對象NewProxyCallableStatement。下面的代碼然后失敗:SQLServerCallableStatement stmt = (SQLServerCallableStatement) connection.prepareCall(sprocSQL);API 調用者看到的完整異常是:java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyCallableStatement cannot be cast to com.microsoft.sqlserver.jdbc.SQLServerCallableStatement我需要使用,SQLServerCallableStatement因為我正在調用一個帶有類型輸入參數的存儲過程TABLE,并且SQLServerCallableStatement有一個setStructured允許構造表類型變量的方法。
1 回答
斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
解決方案是使用下面的代碼:
SQLServerCallableStatement?stmt?=?connection.prepareCall(sprocSQL).unwrap(com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.class);
如果您使用的是 c3p0,則需要使用已unwrap修復錯誤的版本。我用c3p0-0.9.5.2.
參考:?unwrap方法(SQLServerCallableStatement)
添加回答
舉報
0/150
提交
取消
