在准备就绪的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( ")" );