为了账号安全,请及时绑定邮箱和手机立即绑定

无法将 NewProxyCallableStatement 强制转换为 SQLServer

无法将 NewProxyCallableStatement 强制转换为 SQLServer

HUWWW 2023-06-04 16:47:21
我有一个接受连接的通用 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)


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信