Ошибка подготовленного оператора Java - PullRequest
0 голосов
/ 22 декабря 2010

Привет, ребята, следующий код выдает ошибку. У меня есть оператор вставки, созданный один раз, и в цикле while я динамически устанавливаю параметр, и в конце я снова говорю ps2.addBatch () Код, который создает динамическую вставку

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 at oracle.jdbc.dbaccess.DBDataSetImpl._getDBItem (DBDataSetImpl.java:37) в oracle.jdbc.dbaccess.DBDataSetImpl._createOrGetDBItem (DBDataSetImpl.java:781) в oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem (DBDataSetImpl.java:ver.jp_Player.PlayState_ObD)1155) в oracle.jdbc.driver.OraclePreparedStatement.setString (OraclePreparedStatement.java:1572) в Processor.main (Processor.java:233)

1 Ответ

0 голосов
/ 22 декабря 2010

ОП надо уточнить.Это может помочь:

if(pdp!=null && pdp.length>=l) 
  ps2.setString((stat+l),pdp[(l-1)]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...