在准备好的语句中设置数组,抛出 java.sql.SQLFeatureNotSupportedException

2024-04-28

我有一个字符串列表,我想将其设置为准备好的语句中的参数。这里的问题和答案看起来很简单:

如何使用数组列表作为准备好的语句参数 https://stackoverflow.com/questions/17842211/how-to-use-an-arraylist-as-a-prepared-statement-parameter

嗯,这并不容易。仍然需要将列表转换为 SQL 数组,我发现通过在两者之间创建 String[] 可以最轻松地完成此转换。

下面是我的代码:

PreparedStatement s = con.prepareStatement("SELECT  * FROM Table WHERE Country IN ? ");

String[] countryArray = new String[countryListObject.size()];
countryArray = countryListObject.toArray(countryArray);

Array cArray = con.createArrayOf("VARCHAR", countryArray); //<--- Throws the exception
s.setArray(1, cArray);

这个答案 https://stackoverflow.com/a/18398203/1203811似乎解决了类似的问题,但我无法真正理解这如何帮助解决任何问题。答案充其量是模棱两可的,仅指出:

基本上你想做的不是directly可能使用 准备好的声明。

我从 API 文档中了解到,如果 JDBC 驱动程序不支持此方法,则会抛出此异常。我正在运行 com.microsoft.sqlserver sqljdbc4 版本 3.0。我试图查看哪些版本支持和不支持 setArray,但我找不到信息。它可能就在我面前,但我真的很感激对此的一点帮助。

如何确定我的 JDBC 是否支持 setArray()?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在准备好的语句中设置数组,抛出 java.sql.SQLFeatureNotSupportedException 的相关文章

随机推荐