源代码如下:
public boolean LAPRTCPInsert(Laprtcr prtc) throws Exception {
String sql =
"insert into laprtcp(PRNO,PRTYPE,"
+ "PRDCTP,PRDCCD,PRUMAN,PRTTL1,PRSEX,PRTEL,PREML,PRLMAN,PRSNYY,PRSNMM,PRSNDD,PRFILE,PRYY1,PRMM1,PRDD1,PRYY2,"
+ "PRMM2,PRDD2,PRPRC,PRBYWT,PRSVC1,PRSVC2,PRSVC3,PRSVC4,PRSVC5,PRSVC6,PROPR1,PROPY1,PROPM1,PROPD1,PROPT1,"
+"PRDOC,PRSTTS,PREDYY,PREDMM,PREDDD,PRMEMO)"
+" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = ds.getConnection();
pstmt = conn.prepareStatement(sql);
System.out.println(sql); pstmt.setInt(1,prtc.getPrno());//流水号
pstmt.setString(2,prtc.getPrtype());//
pstmt.setString(3,prtc.getPrdctp());//
pstmt.setString(4,prtc.getPrdccd());//
pstmt.setString(5,prtc.getPruman());//
pstmt.setString(6,prtc.getPrttl1());
pstmt.setString(7,prtc.getPrsex());
pstmt.setString(8,prtc.getPrtel());//
pstmt.setString(9,prtc.getPreml());//
pstmt.setString(10,prtc.getPrlman());//
pstmt.setInt(11,prtc.getPrsnyy());
pstmt.setInt(12,prtc.getPrsnmm());
pstmt.setInt(13,prtc.getPrsndd());

pstmt.setString(14,prtc.getPrfile());

pstmt.setInt(15,prtc.getPryy1());//
pstmt.setInt(16,prtc.getPrmm1());//
pstmt.setInt(17,prtc.getPrdd1());//
pstmt.setInt(18,prtc.getPryy2());//
pstmt.setInt(19,prtc.getPrmm2());//
pstmt.setInt(20,prtc.getPrdd2());//
pstmt.setDouble(21,prtc.getPrprc());//
pstmt.setString(22,prtc.getPrbywt());// pstmt.setString(23,prtc.getPrsvc1());//
pstmt.setString(24,prtc.getPrsvc1());//
pstmt.setString(25,prtc.getPrsvc1());//
pstmt.setString(26,prtc.getPrsvc1());//
pstmt.setString(27,prtc.getPrsvc1());//
pstmt.setString(28,prtc.getPrsvc1());// pstmt.setString(29,prtc.getPropr1());//
pstmt.setInt(30,prtc.getPropy1());//
pstmt.setInt(31,prtc.getPropm1());//
pstmt.setInt(32,prtc.getPropd1());//

pstmt.setInt(33,prtc.getPropt1());//
pstmt.setString(34,prtc.getPrdoc());//
pstmt.setString(35,prtc.getPrstts());//
pstmt.setInt(36,prtc.getPredyy());
pstmt.setInt(37,prtc.getPredmm());
pstmt.setInt(38,prtc.getPreddd());
pstmt.setString(39,prtc.getPrmemo());//
pstmt.executeUpdate();
return true;
} catch (Exception ex) {
ex.printStackTrace();
throw ex;
} finally {
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
}
}

解决方案 »

  1.   

    当运行到 pstmt.setInt(33,prtc.getPropt1());这一句之前,就报如下错误,
    真是奇怪,我定义了39个参数啊?
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at java.util.ArrayList.RangeCheck(ArrayList.java(Compiled Code))
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at java.util.ArrayList.set(ArrayList.java:343)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.countParameter(WSJdbcPreparedStatement.java:355)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.setInt(WSJdbcPreparedStatement.java:1005)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.labor.unit.UnitBean.LAPRTCPInsert(UnitBean.java:841)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.labor.unit.EJSRemoteStatelessUnit_5a24ebaa.LAPRTCPInsert(EJSRemoteStatelessUnit_5a24ebaa.java:475)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.labor.unit._Unit_Stub.LAPRTCPInsert(_Unit_Stub.java:864)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at org.apache.jsp._Protocol1._jspService(_Protocol1.java:187)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:344)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(JspServlet.java:598)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.service(JspServlet.java:696)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
    [05-7-26 12:53:36:484 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:258)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:76)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.mcm.util.tools.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:119)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:132)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:71)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:863)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:491)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:173)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:199)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:331)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:432)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:343)
    [05-7-26 12:53:36:500 CST] 2b65befc SystemErr     R  at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
      

  2.   

    怎么会出现数组越界呢,应该不会因为参数太多的缘故啊
    试试将
    prtc.getPropt1()
    的值打印出来, 看看有没有值
    再试试
    pstmt.setInt(33,0);
    看看有没有效。
      

  3.   

    To bitou(大鹏一日同风起,扶摇直上九万里):thanks for your reply我有用System.out.println(prtc.pgetPropt1());没有问题的如果将pstmt.setInt(33,0);这行注释,运行下一句时报:java.lang.IndexOutOfBoundsException: Index: 1, Size: 0你说怪不怪?
      

  4.   

    就执行这几个看看
    pstmt.setInt(33,prtc.getPropt1());//
    pstmt.setString(34,prtc.getPrdoc());//
    pstmt.setString(35,prtc.getPrstts());//
    pstmt.setInt(36,prtc.getPredyy());
    pstmt.setInt(37,prtc.getPredmm());
    pstmt.setInt(38,prtc.getPreddd());
      

  5.   

    pstmt.setInt(1,prtc.getPrno());//流水号
    pstmt.setInt(2,prtc.getPropt1());//
    pstmt.setString(3,prtc.getPrdoc());//
    pstmt.setString(4,prtc.getPrstts());//
    pstmt.setInt(5,prtc.getPredyy());
    pstmt.setInt(6,prtc.getPredmm());
    pstmt.setInt(7,prtc.getPreddd());
      

  6.   


    我重新WSAD之后,再运行,成功!然后,继续执行此方法,又报同样的错误!怪......
      

  7.   

    首先看看是否是插入特定字段的问题.
    然后看看是否是jvm内存的问题.
      

  8.   


    刚才看了一下上一次的版本,在该版本中此方法确实是只有32个参数的,怎么会有这样的问题呢?开发环境:WSAD5.0To: laughsmile(海边的星空) 
    首先看看是否是插入特定字段的问题.
    然后看看是否是jvm内存的问题.
    请问一下怎么看?
      

  9.   

    不知道java的int类型的范围是不是和C++一样,超出六万多就溢出了,把第33个子段的类型改成long试一下
      

  10.   

    to highsea_004(highsea):跟这个没有关系,我敢肯定to  star_str(生命火花):  我觉得跟数据库设置没有关系,实际上还没到数据库这里,我查了数据库的日志,根本没有日志!
      

  11.   


    知道什么问题了WSAD5的bug,最多支持32个字段参数,必须打补丁才行狂晕啊...................................