2010-12-22 79 views
-4

嗨,夥計們下面的代碼拋出一個錯誤我有一個插入語句創建一次,並在while循環我動態設置參數,並在最後我說ps2.addBatch()再創建代碼動態插入Java編寫語句錯誤

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.jdb c.dbaccess.DBDataSetImpl._getDBItem(DBDataSetImpl.java:378) 在 oracle.jdbc.dbaccess.DBDataSetImpl._createOrGetDBItem(DBDataSetImpl.java:781) 在 oracle.jdbc.dbaccess.DBDataSetImpl.setBytesBindItem(DBDataSetImpl.java: 2450) 在 oracle.jdbc.driver.OraclePreparedStatement.setItem(OraclePreparedStatement.java:1155) 在 oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:1572) 在 Processor.main(Processor.java :233)

+4

我不能確定你希望我們如何用這麼少的信息解決這個... – 2010-12-22 07:15:28

+0

然後檢查PDP []數組長度^^ – pinichi 2010-12-22 07:21:04

回答

0

OP需要澄清。這可能幫助:

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