对象-java JDBC 批量插入的时候报数组下标越界,求大神

问题描述

java JDBC 批量插入的时候报数组下标越界,求大神
代码:
private static Boolean Function_User(Map resultMap String sqlString tableType) {
// TODO Auto-generated method stub

    Connection conn=null;    PreparedStatement insert_st=null;    int count = 0;    final int batchSize = 500;    System.out.println(""开始:""+Calendar.getInstance().getTime());    try {        conn=DriverManager.getConnection(db_urldb_namedb_pwd);        conn.setAutoCommit(false);        insert_st = conn.prepareStatement(sql);        for (int i = 0; i < resultMap.get(tableType).size(); i++) {            Object obj = resultMap.get(tableType).get(i);                           OrderUserSnap user = (OrderUserSnap) obj;            insert_st.setString(1 ZH_S(user.getId()));            insert_st.addBatch();             if(++count % batchSize == 0) {                 insert_st.executeBatch();                 insert_st.clearBatch();                }             System.out.println(""tt:""+count);        }        insert_st.executeBatch();        insert_st.clearBatch();    } catch (SQLException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }finally{        try {            insert_st.close();            conn.close();             System.out.println(""结束:""+Calendar.getInstance().getTime());        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }           }    return true;}

解决方案

擦 已经解决:原因是 我insert_st.setString(1 ZH_S(user.getId()));,传递的参数过多,Oracle的批处理个数限制为:
count=传参个数 * 查入的数据条数

上边设置的1000条数据,进行一次批处理,越界了~
将 final int batchSize = 500; 的值设小一点就屁事没有

解决方案二:
报错信息:
查询出的数据条数为:1450
开始:Fri Mar 04 19:32:49 CST 2016
tt:1



tt:999
结束:Fri Mar 04 19:32:50 CST 2016
java.lang.ArrayIndexOutOfBoundsException: -32589
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2677)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9255)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:210)
at Bing.Main.Function_User(Main.java:422)
at Bing.Main.DataForDB(Main.java:156)
at Bing.Main.ForServlet(Main.java:110)
at Bing.Main.access$0(Main.java:63)
at Bing.Main$My_Timer.run(Main.java:58)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)

解决方案三:
当第1000条数据的时候,执行
if(++count % batchSize == 0) {
insert_st.executeBatch();
insert_st.clearBatch();
}
及1000条数据 提交一次,报错,说什么下标越界,找不到原因啊

时间: 2024-10-04 15:46:42

对象-java JDBC 批量插入的时候报数组下标越界,求大神的相关文章

html-插入jstl标签报错,求大神帮忙看下,网上解决方案都是错的

问题描述 插入jstl标签报错,求大神帮忙看下,网上解决方案都是错的 com.neusoft.unieap.action.EAPActionServlet.process(EAPActionServlet.java:814) >> org.apache.jasper.JasperException: Validation error messages from TagLibraryValidator for c null: org.xml.sax.SAXParseException: Attr

JDBC 向数据库插入数据 遇到个怪问题 求大神回答

问题描述 JDBC 向数据库插入数据 遇到个怪问题 求大神回答 代码如下package insertCar; import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List; public

suse linux java ftp上传文件名称导致报错,求大神指导

问题描述 suse linux java ftp上传文件名称导致报错,求大神指导 上传时"school_user.questionext.csv"就因为文件名称多了一个"."导致报错 553 Could not create file.

java程序报错,求大神找bug

问题描述 java程序报错,求大神找bug package arraysofobjects; import java.util.Scanner; public class arraysofobjects { public static void main(String[] args) { Scanner input=new Scanner(System.in); students[] stu=new students[4]; String name; int grade; for(int i=0

编译-用Java写了一个五子棋游戏,插入背景音乐出了问题。求大神指教

问题描述 用Java写了一个五子棋游戏,插入背景音乐出了问题.求大神指教 用Java写了一个五子棋游戏,插入背景音乐.第一遍音乐结束就不放了,不能暂停,重新播放和循环播放等功能.我编译的时候用的是Java应用程序,不是APPlet. package cn.edu.ouc.fiveChess; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound

java源码-写了一个java实现航空订票功能,写了一部分,但是一运行就报错,求大神指点

问题描述 写了一个java实现航空订票功能,写了一部分,但是一运行就报错,求大神指点 import java.util.Scanner;public class The_Plane_Tickets { static String[] names = null; //起点终点 static double[] price = null; //票价 static int []FlightNumber = null; //航班号 static String[] TimeOfFlight = null;/

spring+junit4测试报错,求大神解答

问题描述 spring+junit4测试报错,求大神解答 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308) at org.springframework.test.context.support.DependencyInjectio

访问DB2/NT 6.1服务器端数据库连接报错,求大神解求

问题描述 访问DB2/NT 6.1服务器端数据库连接报错,求大神解求 DB2版本:DB2/NT 6.1 JDBC代码: Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance(); Connection conn = DriverManager.getConnection("jdbc:db2://170.111.xxx.xxx:50000/xxxxx","xxxx", "x

spring batch 报错,求大神赐教,急急急急。。。。。。

问题描述 spring batch 报错,求大神赐教,急急急急...... 2014-2-22 13:13:42 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@13d93f4: display name [org.spring