pstmt=con.prepareStatement("insert into blbg value(?, ?, ?, ?, ?, ?)");

pstmt.setString(1, gldh);
pstmt.setString(2, slh);
pstmt.setString(3, spm);
pstmt.setString(4, sgg);
pstmt.setInt(5, number);
pstmt.setString(6, date);

pstmt.addBatch();
//save成品单

pstmt=con.prepareStatement("insert into blbgtb2 value (?, ?, ?, ?, ?, ?, ?, ?, ?)");

//1
pstmt.setString(1,gldh);
pstmt.setString(2, llh1);
pstmt.setString(3, lpm1);
pstmt.setString(4, lgg1);
pstmt.setInt(5, losl);
pstmt.setString(6, lcs);
pstmt.setString(7, lzs1);
pstmt.setString(8, lzs2);
pstmt.setString(9, lylpd);
                                             
                                              //下面还有3数据就不Copy了
                                            
                                              pstmt.addBatch();

pstmt.executeBatch();
con.commit();//手动提交出现这样的错误:
009-8-14 11:35:11 org.apache.struts.action.RequestProcessor processException
警告: Unhandled Exception thrown: class java.lang.ArrayIndexOutOfBoundsException
2009-8-14 11:35:11 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.ArrayIndexOutOfBoundsException: 6
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(Unknown Source)
at com.name.action.insert.InsertDateActin.execute(InsertDateActin.java:230)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

解决方案 »

  1.   

    补充一点就是我在 blbg表的第一个字段是ID 自增的也是主键这样不会影响我下面的第一个insert语句!!pstmt=con.prepareStatement( "insert   into   blbg   value(?,   ?,   ?,   ?,   ?,   ?) "); pstmt.setString(1,   gldh); 
    pstmt.setString(2,   slh); 
    pstmt.setString(3,   spm); 
    pstmt.setString(4,   sgg); 
    pstmt.setInt(5,   number); 
    pstmt.setString(6,   date); pstmt.addBatch(); 
    //save成品单 pstmt=con.prepareStatement( "insert   into   blbgtb2   value   (?,   ?,   ?,   ?,   ?,   ?,   ?,   ?,   ?) "); //1 
    pstmt.setString(1,gldh); 
    pstmt.setString(2,   llh1); 
    pstmt.setString(3,   lpm1); 
    pstmt.setString(4,   lgg1); 
    pstmt.setInt(5,   losl); 
    pstmt.setString(6,   lcs); 
    pstmt.setString(7,   lzs1); 
    pstmt.setString(8,   lzs2); 
    pstmt.setString(9,   lylpd); 
                                                                                              
                                                                                                //下面还有3数据就不Copy了 
                                                                                            
                                                                                                pstmt.addBatch(); pstmt.executeBatch(); 
    con.commit();//手动提交 
      

  2.   

    ArrayIndexOutOfBoundsException
     数组越界楼主可以把sql语句放查询分析器里执行下~~
      先随便写几个值·~
      

  3.   

    错误信息已经很明确了
    java.lang.ArrayIndexOutOfBoundsException:   6 数组越界了
      

  4.   


    pstmt=con.prepareStatement( "insert   into   blbg   values(?,   ?,   ?,   ?,   ?,   ?) "); 
      

  5.   

    现在出现了只能插入最后一条数据。。!!!con.setAutoCommit(false);//不设置自动提交
    pstmt=con.prepareStatement("insert into blbg values(?, ?, ?, ?, ?, ?)");
    //数据1
    pstmt.addBatch();
    pstmt=con.prepareStatement("insert into blbgtb2 values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
    //数据1
    //数据2
    //数据3
    //数据4
    pstmt.addBatch();
    pstmt.executeBatch();
    con.commit();//手动提交
    只成功第4笔
    这是什么原因上面是我的流程!!!
      

  6.   

    pstmt 对象 只能有一个,它将收集收所有的预编译指令。最后一并完成!!!应该删除
    一句con.prepareStatement()语句即可!!!