Informix JDBC PreparedStatement UPDATE Multiset

时间:2010-10-30 12:23:29

标签: java sql jdbc informix

我想更改表格的MULTISET列,我的代码看起来像这样:

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

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

这有什么问题?当我把真正的价值而不是'?'时一切正常。

Btw ... mc 定义为 MULTISET(CHAR(20)NOT NULL)

谢谢...

1 个答案:

答案 0 :(得分:2)

我使用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, updated: 3