2010-10-30 4 views
1

Je souhaite modifier la colonne MULTISET de la table, et mon code ressemble à ceci:Informix JDBC PreparedStatement MISE À JOUR Multiset

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

Et j'obtiens l'erreur: « tentative illégale de convertir un type de collection dans un autre type ".

Quel est le problème avec cela? Quand je mets des valeurs réelles au lieu de '?' Tout fonctionne très bien.

... BTW mc est défini comme MULTISET (CHAR (20) NOT NULL)

Merci ...

Répondre

2

Je l'ai testé à l'aide des pilotes JDBC Informix 3.50 et Jython 2.5. 1 et ça marche. Peut-être que vous utilisez une ancienne version de JDBC? Je l'ai testé avec les deux méthodes execute() et executeUpdate(). Mon 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)) 

Pour 3 disques que j'enficher pour une aaa_mc_test table, il imprime ok, updated: 3

Questions connexes