Informix JDBC 准备语句 UPDATE 多重集

发布于 2024-09-30 01:59:57 字数 399 浏览 4 评论 0原文

我想更改表的 MULTISET 列,我的代码如下所示:

PreparedStatement pstm = preparedStatement("UPDATE table SET mc = MULTISET{?, ?} WHERE ...");
pstm.setString(1, "...");
pstm.setString(2, "...");
pstm.execute();

我收到错误:“非法尝试将集合类型转换为另一种类型。”

这有什么问题吗?当我输入实际值而不是“?”时一切都很好。

顺便说一句... mc 的定义类似于 MULTISET(CHAR(20) NOT NULL)

谢谢...

I want to change MULTISET column of the table, and my code looks something like this:

PreparedStatement pstm = preparedStatement("UPDATE table SET mc = MULTISET{?, ?} WHERE ...");
pstm.setString(1, "...");
pstm.setString(2, "...");
pstm.execute();

And I get error: "Illegal attempt to convert a collection type into another type.".

What is wrong with this? When I put real values instead of '?' everything works just fine.

Btw... mc is defined like MULTISET(CHAR(20) NOT NULL)

Thank you...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沫雨熙 2024-10-07 01:59:57

我使用 JDBC Informix 驱动程序 3.50 和 Jython 2.5.1 对其进行了测试,并且它有效。也许您使用一些旧版本的 JDBC?我使用 execute()executeUpdate() 方法对其进行了测试。我的代码:

from java.sql import DriverManager
from java.lang import Class

Class.forName("com.informix.jdbc.IfxDriver")

db = DriverManager.getConnection(db_url, usr, passwd)
pstm = db.prepareStatement("UPDATE aaa_mc_test SET mc_test = MULTISET{?, ?}")
pstm.setString(1, "...")
pstm.setString(2, "...")
r = pstm.executeUpdate()
print('ok, updated: %d' % (r))

对于我插入 aaa_mc_test 表的 3 条记录,它打印出 ok,更新:3

I tested it using JDBC Informix drivers 3.50 and Jython 2.5.1 and it works. Maybe you use some old version of JDBC? I tested it both with execute() and executeUpdate() method. My code:

from java.sql import DriverManager
from java.lang import Class

Class.forName("com.informix.jdbc.IfxDriver")

db = DriverManager.getConnection(db_url, usr, passwd)
pstm = db.prepareStatement("UPDATE aaa_mc_test SET mc_test = MULTISET{?, ?}")
pstm.setString(1, "...")
pstm.setString(2, "...")
r = pstm.executeUpdate()
print('ok, updated: %d' % (r))

For 3 records I inserted to aaa_mc_test table it prints out ok, updated: 3

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文