使用SQLParameterSource将数据插入数据库表中的27列-失败,出现ArrayIndexOutOfBounds异常

问题描述

将数据插入具有27列的DB表时,我遇到类似的问题。我正在使用NamedParameterJdbcTemplate类插入数据。在这方面的任何帮助都是非常有帮助的。请找到下面的代码

sqlParameterSource parameters = new MapsqlParameterSource()
.addValue("Id",12345678)
.addValue("packageId",info.getIrocPkgId())
.addValue("isAsgn",1)
.addValue("startTm",info.getStartTm())
.addValue("endTm",info.getEndTm())
.addValue("type",ConstantVal.TASK)
.addValue("note",ConstantVal.ETA + ":" + info.getEta())
.addValue("fdbk",ConstantVal.EMPTY)
.addValue("sCnt",1)
.addValue("aCd",ConstantVal.ETA)
.addValue("isAuto",1)
.addValue("dfltStartTm",info.getStartTm())
.addValue("dfltEndTm",info.getEndTm())
.addValue("aInfo",ConstantVal.EMPTY)
.addValue("stat",ConstantVal.ACTIVE)
.addValue("cnclTask",ConstantVal.ZERO)
.addValue("asgnNbr",ConstantVal.EMPTY)
.addValue("priInd",ConstantVal.ZERO)
.addValue("ovlpMatchNbr",ConstantVal.EMPTY)
.addValue("attchIds",ConstantVal.EMPTY)
.addValue("aType",ConstantVal.EMPTY)
.addValue("lInd",ConstantVal.ZERO)
.addValue("pAsgn",ConstantVal.ZERO)
.addValue("rId",ConstantVal.EMPTY)
.addValue("bInd",ConstantVal.EMPTY)
.addValue("createDtTm",new Timestamp((new Date()).getTime()))
.addValue("updatedDtTm",ConstantVal.EMPTY);
int nb = namedParameterJdbcTemplate.update(insertRecords,parameters,keyHolder,new String[] { "ID" });

beans.xml中的SQL查询在下面给出

<bean id="insertRecords" class="java.lang.String"
scope="prototype">
<constructor-arg type="java.lang.String"
value="
INSERT
INTO
XYZ
(
    ID,PACKAGE_ID,IS_ASGN,START_TM,END_TM,TYPE,NOTE,fdbK,S_CNT,A_CD,IS_AUTO,DFLT_START_TM,DFLT_END_TM,A_INFO,STAT,IS_CNCL_TASK,ASGN_NBR,PRI_ASGN_IND,OVLP_MATCH_NBR,A_IDS,ASGN_TYPE,LOCK_IND,P_ASGN,R_ID,B_IND,CREATED_DT_TM,UPDATED_DT_TM
)
VALUES
(
    :Id,:packageId,:isAsgn,:startTm,:endTm,:type,:note,:fdbk,:sCnt,:aCd,:isAuto,:dfltStartTm,:dfltEndTm,:aInfo,:stat,:cnclTask,:asgnNbr,:priInd,:ovlpMatchNbr,:attchIds,:aType,:lInd,:pAsgn,:rId,:bInd,:createDtTm,:updatedDtTm) " />
</bean>

我在插入数据时看到以下错误

java.lang.Arrayindexoutofboundsexception
    at oracle.jdbc.driver.Oraclesql.computeBasicInfo(Oraclesql.java:950)
    at oracle.jdbc.driver.Oraclesql.getsqlKind(Oraclesql.java:623)
    at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:1212)
    at oracle.jdbc.driver.T4CPreparedStatement.<init>(T4CPreparedStatement.java:28)
    at oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement(T4CDriverExtension.java:68)
    at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3140)
    at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3042)
    at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:6022)
    at oracle.jdbc.OracleConnectionWrapper.prepareStatement(OracleConnectionWrapper.java:679)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.pmiPrepareStatement(WSJdbcConnection.java:5071)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:4946)
    at org.springframework.jdbc.core.PreparedStatementCreatorFactory$PreparedStatementCreatorImpl.createPreparedStatement(PreparedStatementCreatorFactory.java:231)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:638)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:943)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:344)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)