在准备就绪的StamentDB2中设置数组不工作Java

在准备就绪的StamentDB2中设置数组不工作Java,java,jdbc,db2,Java,Jdbc,Db2,我面临着这个错误 安静一段时间后,我有一个疑问: String sql = "select US_KEY, US_LOGID, US_PASSWORD, US_SESSION, US_LASTLOGIN,\n" + " US_LASTACCESS, US_INTENTOS, US_NOMBRE, US_APELLIDO, US_ESTADO,\n" + " US_RAZON, US_RUT, US_DIGITOV, US_DIRECCION, US_EMAIL,\n" + " US_

我面临着这个错误 安静一段时间后,我有一个疑问:

String sql = "select US_KEY, US_LOGID, US_PASSWORD, US_SESSION, US_LASTLOGIN,\n" +
"   US_LASTACCESS, US_INTENTOS, US_NOMBRE, US_APELLIDO, US_ESTADO,\n" +
"   US_RAZON, US_RUT, US_DIGITOV, US_DIRECCION, US_EMAIL,\n" +
"   US_TELEFONO, US_CARGO, TU_KEY, EM_KEY, US_ULTIMO_CAMBIO_PASS,\n" +
"   US_TELEFONO2, US_PIN, US_BLOQUEO, US_CHECK_VOLATIL_PASS,\n" +
"   US_PV_KEY_SELECTED, US_VD_KEY_SELECTED, US_SC_KEY_SELECTED,\n" +
"   US_SECRET_ASK\n" +
" from DBUSER.USUARIO\n" +
" where US_KEY in (?) ";
我正在设置如下值:

Array array = query.getStatement().getConnection().createArrayOf("BIGINT",arrayOfLong);
query.setArray(param.getName(), array);
我正在使用com.ibm.db2.jcc.DB2Driver驱动程序连接db2数据库,并收到以下错误:

com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][1091][10417][3.62.56]无效的数据转换:参数 实例com.ibm.db2.jcc.am。p@6b09bb57对于请求的文件无效 转换。ERRORCODE=-4461,SQLSTATE=42815 位于com.ibm.db2.jcc.am.fd.a(fd.java:676)

不可能将数组设置为db2的准备语句?不支持吗?是否有其他选择?

查看似乎不支持

在表19中搜索方法
setArray
(支持
java.sql.PreparedStatement
方法)。

查看似乎不支持


在表19中搜索方法
setArray
(支持
java.sql.PreparedStatement
方法)。

您必须以编程方式创建一个循环,以在(?,?…)子句中创建
,并为
PreparedStatement
的每个
创建另一个循环

此外,如果1000s元素中的
IN
子句编号,则可能必须将其拆分,并将部分结果与
UNION
合并

// construct IN clause
for (int i =0; i < us_keys.length(); i++ ) {
  inbuffer.append((i>0)?(',?'):('?'));
}
sql.append( "IN (" );
sql.append( inbuffer );
sql.append( ")" );

您必须以编程方式创建一个循环以在(?,?…)
子句中创建
,并为
PreparedStatement
的每个
创建另一个循环以执行
setXXX()

此外,如果1000s元素中的
IN
子句编号,则可能必须将其拆分,并将部分结果与
UNION
合并

// construct IN clause
for (int i =0; i < us_keys.length(); i++ ) {
  inbuffer.append((i>0)?(',?'):('?'));
}
sql.append( "IN (" );
sql.append( inbuffer );
sql.append( ")" );