Informix JDBC PreparedStatement ОБНОВЛЕНИЕ Мультисеть - PullRequest
1 голос
/ 30 октября 2010

Я хочу изменить столбец MULTISET таблицы, и мой код выглядит примерно так:

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

И я получаю ошибку: "Недопустимая попытка преобразовать тип коллекции в другой тип.".

Что с этим не так?Когда я ставлю реальные значения вместо «?»все работает просто отлично.

Кстати ... mc определяется как MULTISET (CHAR (20) NOT NULL)

Спасибо ...

1 Ответ

2 голосов
/ 03 ноября 2010

Я протестировал его, используя драйверы 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))

Для 3 записей, которые я вставил в aaa_mc_test таблицу, она распечатывает ok, updated: 3

...