java - Informix JDBC 准备语句 UPDATE 多重集

标签 java sql jdbc informix

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

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

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

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

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

谢谢...

最佳答案

我使用 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

关于java - Informix JDBC 准备语句 UPDATE 多重集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4058677/

相关文章:

java - 将 Java Web Start jar 与 Web 应用程序集成

java - 动态查询语句

java - 编写 java 程序连接 DB2 和获取数据时出现运行时错误 "Class Not found"

java - 在运行时将类从文件系统加载到应用程序

java - SOAP Spring wsdl 链接

java - 初始化 boolean 值的正确方法

java - 自定义Spring集成出站网关实现

java - 数据库中的旧数据不断被新数据替换

c# - 如何设计两组数据交集的sql查询

sql - Postgres - 将 TSTZRANGE 分成两列