gpt4 book ai didi

java - NewProxyCallableStatement 无法转换为 SQLServerCallableStatement

转载 作者:行者123 更新时间:2023-12-02 01:42:13 33 4
gpt4 key购买 nike

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

最佳答案

解决方案是使用下面的代码:

SQLServerCallableStatement stmt = connection.prepareCall(sprocSQL).unwrap(com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.class);

如果您使用的是 c3p0,则需要使用已修复 unwrap 错误的版本。我使用 c3p0-0.9.5.2 测试了上述内容。

引用: unwrap Method (SQLServerCallableStatement)

关于java - NewProxyCallableStatement 无法转换为 SQLServerCallableStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482349/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com