我有一个接受连接的通用 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
提交
取消