猿问

无法将 NewProxyCallableStatement 强制转换为 SQLServer

我有一个接受连接的通用 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允许构造表类型变量的方法。


HUWWW
浏览 124回答 1
1回答

斯蒂芬大帝

解决方案是使用下面的代码:SQLServerCallableStatement stmt = connection.prepareCall(sprocSQL).unwrap(com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.class);如果您使用的是 c3p0,则需要使用已unwrap修复错误的版本。我用c3p0-0.9.5.2.参考: unwrap方法(SQLServerCallableStatement)
随时随地看视频慕课网APP

相关分类

Java
我要回答