Java准备语句错误

Java准备语句错误,java,sql,prepared-statement,Java,Sql,Prepared Statement,大家好,下面的代码向我抛出了一个错误,我创建了一个insert语句,在while循环中,我正在动态设置参数,最后我说ps2.addBatch是创建动态insert的代码 rs = st.executeQuery("SELECT column_name FROM all_tab_cols where lower(table_name)= '" + tableName + "' order by column_id"); sql = new StringBuffer(300); sql.app

大家好,下面的代码向我抛出了一个错误,我创建了一个insert语句,在while循环中,我正在动态设置参数,最后我说ps2.addBatch是创建动态insert的代码

rs = st.executeQuery("SELECT column_name FROM all_tab_cols 
where  lower(table_name)= '" + tableName + "' order by column_id"); 
sql = new StringBuffer(300);
sql.append("insert into ").append( tableName).append("(");
String prefix="";
while (rs.next())
{
sql.append(prefix).append(rs.getString("column_name"));
values.append(prefix).append("?");
prefix= ",";

}
sql.append(" ) values(").append(values).append(")");
ps2 = conn.prepareStatement(sql.toString());

while ( (eachLine = in.readLine()) != null))
{
    for (int k=stat; k <=45;k++)

{ 
    ps2.setString (k,main[(k-2)]);
}
stat=45;
for (int l=1;l<= 2; l++)
{
    ps2.setString((stat+l),pdp[(l-1)]);// Exception                                       
}

 ps2.addBatch();
}

这就是错误所在

java.lang.ArrayIndexOutOfBoundsException:45 在 oracle.jdbc.dbaccess.DBDataSetImpl.\u getDBItemDBDataSetImpl.java:378 在 oracle.jdbc.dbaccess.DBDataSetImpl.\u createOrGetDBItemDBDataSetImpl.java:781 在 java:2450 在 oracle.jdbc.driver.OraclePreparedStatement.setItemOraclePreparedStatement.java:1155 在 oracle.jdbc.driver.OraclePreparedStatement.SetStringarclePreparedStatement.java:1572 在 Processor.mainProcessor.java:233


我需要澄清。这可能有助于:

if(pdp!=null && pdp.length>=l) 
  ps2.setString((stat+l),pdp[(l-1)]);

我不确定您希望我们如何在信息如此之少的情况下解决这个问题……那么请检查pdp[]数组长度^^^^我想您编写您的脚本时忘记了java具有零基数组。无论如何@Ignacio Vazquez Abramsright@pinchi数组的大小为30,我不明白数组长度为45的异常是如何在该行抛出的,除非准备好的语句是问题所在——也许解释解决方案的作用会反转向下投票。我不会担心现在的落选,因为你有29k;