jdbc preparestatement 批量提交问题 5C
 public static void addRecord(String tableName,String title,List<Object> contents){
        long count = 0;
        Integer time = 0;
        Connection conn = getConn();
        try {
            conn.setAutoCommit(false);
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        PreparedStatement ps = null;
        StringBuffer sql = new StringBuffer();
        StringBuffer sb = new StringBuffer();
        try {
        for (int i = 0; i < contents.size(); i++) {
            sql.setLength(0);
            sb.setLength(0);
            sb.append(((List)contents.get(i)).get(0).toString());
        //sql.append("insert into "+tableName+" ("+title+") values ( "+sb.toString().replaceAll("\"","'")+" )");
        sql.append("insert into "+tableName+" ("+title+") values ( "+sb.toString()+" )");
            ps = conn.prepareStatement(sql.toString());
            ps.addBatch();
            count++;
            if(time<=(count/10000)){
                if(count%10000==0){
                    time++;
                    ps.executeBatch();
                    conn.commit();
                    //conn.setAutoCommit(true);
                }
            }
            if((time==(contents.size()/10000))&&(count%10000)!=0&&count==contents.size()){
                System.out.println("提交数据");
                int[] executeBatch = ps.executeBatch();
                System.out.println(executeBatch.toString());
                conn.commit();
                //conn.setAutoCommit(true);
            }

        }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            Close(null, ps, null);
        }

数据不能全部提交而且只有一条不是最后的记录,是中间的记录,为什么??

6个回答

commit不是应该在for循环外面吗?

longlong3207
longlong3207 for循环外面的话是所有数据一起提交
一年多之前 回复

你逻辑有问题,使用预编译的,语法不是这个写的!

longlong3207
longlong3207 预编译必须是?传值吗 我也是发现debug的时候都正确,提交之后只有一条数据而且不是最后一条有点懵
一年多之前 回复

这个是我修改之后的使用了statement


 @SuppressWarnings("unchecked")
    public static void addRecord(String tableName,String title,List<Object> contents){
        long count = 0;
        Integer time = 0;
        Connection conn = getConn();
        try {
            conn.setAutoCommit(false);
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
        Statement sm = null;
        StringBuffer sb = new StringBuffer();
        try {
            sm = conn.createStatement();
        for (int i = 0; i < contents.size(); i++) {
            sb.setLength(0);
            sb.append(((List<Object>)contents.get(i)).get(0).toString());
            sm.addBatch("insert into "+tableName+" ("+title+") values ("+sb.toString()+")");
            count++;
            if(time<=(count/10000)){
                if(count%10000==0){
                    time++;
                    sm.executeBatch();
                    conn.commit();
                    //conn.setAutoCommit(true);
                }
            }
            if((time==(contents.size()/10000))&&(count%10000)!=0&&count==contents.size()){
                sm.executeBatch();
                conn.commit();
                //conn.setAutoCommit(true);
            }
        }

        } catch (SQLException e) {
            //数据插入失败
            e.printStackTrace();
        }finally{
            Close(null,null,sm, null);
        }

    }


如果少一条数据 ,看报错不 是不是数据库有唯一索引 或着联合索引

conn.commit();提交后把 要StringBuffer sb = new StringBuffer();

已经解决了,使用了statement

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JDBC prepareStatement 问题
在更新SQLServer 2000数据库的时候, 遇到一些奇怪的问题,请教一下各位大侠!!rnrn数据库中有一表member_basic, 已经有了若干个数据.member_basic的关系模式为rnmember_basic(id: char(10), nick_name: varchar(50), sex: char(4), password: varchar(20), sex: smallint, register_date: datetime)rn已经连接了成功数据库.rn String query ="select count(*) from member_basic";rn java.sql.ResultSet rs = stm.executeQuery(query);rn rs.next();rn int count = rs.getInt(1);rn rs.close();rn //以上语句执行时没什么问题, count的结果成功返回rn String id = String.valueOf(count+1000);rn String update = "insert into member_basic values(?, ?, ?, ?, ?, ?)";rn try rn java.sql.PreparedStatement prpStm = cnn.prepareStatement(update);rn prpStm.setString(1, id);rn prpStm.setString(2, nickNameTextField.getText());rn prpStm.setString(3, maleRadioButton.isSelected()?"男":"女");rn prpStm.setString(4, String.valueOf(passwordPasswordField.getPassword()));rn prpStm.setInt(5, Integer.parseInt(ageTextField.getText()));rn prpStm.setDate(6, new java.sql.Date(new java.util.Date().getTime()));rn prpStm.executeUpdate();//然而该语句却引发SQLExceptionrn .....rn ...rnrnprpStm.executeUpdate()这句提示异常为rnjava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'member_basic' 无效。rnrn为何我在上面第一次可以成功使用member_basic,而到了这儿却变成了无效了呢?rn如何解决这个问题, 先谢谢了.
关于jdbc的prepareStatement问题
jdbc里如果prepareStatement但是不使用?赋值,在oracle里会将运行的sql进行预编译吗
jdbc PrepareStatement 的问题(oracle)
我用写了个JDBC测试,用Statement去执行那两个sql是可以的,用PrepareStatement,结果不行,rn这两个sql根本没有什么特别之处,一个是select .. from table where id=?,一个delete from table where id=?rnJDBC执行这两个sql都没有Exception, 都返回0 record.(oracle)rnrn请看清楚:用Statement去执行那两个sql是可以的,用PrepareStatement,结果不行
jdbc 批量提交
场景:大批量新增数据 对比:逐笔提交和批次提交   记录数:2322条记录 测试结果:单笔提交:22938毫秒;批量提交:172毫秒   批量提交相关代码:             connection = dataSource.getConnection();             connection.setAutoCommit(false);             //...
JDBC中prepareStatement方法的问题!
在JDBC中prepareStatement方法的参数可以是一个字符串,这个字符串是不是一定要带“?”呢?rn我在try中写了以下代码rn pstmt = conn.prepareStatement(str);rn ResultSet rs = pstmt.executeQuery();rn但第一句话一执行老是会被catchrn这里str是一个已经组装好了的sql查询语句,放在查询分析器里面是可以正常运行并获取结果的。rn请问这里有可能是哪里出问题了。
JDBC的prepareStatement使用疑惑
改写分页程序,遇到一个SQL语句执行的问题,弄了一晚上也没解决。rnrnpublic ArrayList findAllBooks(int offset, int length, Connection conn) throws SQLException rn PreparedStatement ps = null;rn ResultSet rs = null;rn ArrayList books = new ArrayList();rn BookDAO empvo = null;rn BookVO bookVO=new BookVO();rnrn // String strSql = "select * from book where rowid not in (select rowid from book where rownum >= ?) and rownum <= ?";//原来oracle的,现在不能用到sql server上rn rn String strSql = "select top ? * "rn +"from book "rn +"where bookid not in "rn +"(select top ? bookid "rn +" from book )";rn rn try rn ps = conn.prepareStatement(strSql);rn ps.setByte(2, Integer.valueOf(length).byteValue()); //起始记录的位置rn ps.setByte(1, Integer.valueOf(offset).byteValue()); //需要读取的记录数 rn rs = ps.executeQuery();rn rn while (rs.next()) rn rn bookVO.setBookId(Integer.toString(rs.getInt ("BookID"))) ; rn bookVO.setBookName (rs.getString ("BookName")) ; rn bookVO.setAuthor(rs.getString ("Author")) ; rn books.add(empvo);rn rn rn catch (SQLException ex) rn ex.printStackTrace();rn throw ex;rn rn return books;rn rnrnrnjava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 rn行: '@P1' 附近有语法错误。rn at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)rn at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)rn at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)rn at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)rn at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)rn at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)rn at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)rn at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)rn at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)rn at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)rn at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)rn at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)rn at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)rn at com.fxfeiyi.itbook.dao.book.BookDAO.findAllBooks(BookDAO.java:47)rn at com.fxfeiyi.itbook.bo.book.BookBO.findAllBooks(BookBO.java:33)
JDBC(用PrepareStatement实现)
用JDBC实现Java与数据库的连接,该文件使用PrepareStatement实现。
JDBC中PrepareStatement的使用
注重实践,剔除繁琐的理论,通过案例讲解我们常用的知识点,各个知识点之间相对独立,不用担心某一个知识点学不会而耽搁学其他的知识点。轻轻松松入门JDBC。
JDBC中PreparedStatement的批量提交原理
PreparedStatement中的addbatch方法和executebatch方法的原理是什么,如果不用批量提交的话网络通讯次数为我的提交的操作数,如果使用批量提交的话网络的通讯次数只有2次。 rnrn所以我就有疑惑了,假设现在没有jdbc,那么这个批量提交用oracle是怎么实现的。 rnrn难道是在Oracle端声称临时的储存过程,然后给储存过程一次传参,所以只要通讯两次?? 这是我的猜测,应该不对,求真相
JDBC 批量存储问题。
现在有一个批量存储的代码[code=java] DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());rn gpsConnection = DriverManager.getConnection("地址", "用户名","密码");rn rn gpsPS = (PreparedStatement) gpsConnection.prepareStatement(gpsSQL);rn rn gpsConnection.setAutoCommit(false);[/code],因为是批量存储,所以gpsPS 和gpsConnection 始终没关闭,等到下一轮存储的时候,还执行上面的连接代码,应该是把gpsPS 和gpsConnection覆盖了吧,那前一轮的gpsPS 和gpsConnection会释放吗?现在压力是存储2000条没问题,4000条内存蹭蹭往上涨,是这个原因吗?
AdoDataSet批量提交的问题
我使用ADODataSet,将LockType设置为ltBatchOptimisticrn然后打开这个AdoDataSet,我删除了一条记录之后,调用AdoDataSet的UpdateBatch事件,AdoDataSet.UpdateBatch,可是,我删除的这条记录还是没有从数据库中删除掉,下次打开这个AdoDataSet又出来了,请问这个是什么原因
网页批量提交问题
一个页面,记录数不定,如下:rn模块班编号 模块名称 任课教师 编制人数 报名人数 是否开设rnBB04050200 英语笔译 张老师 10 10 [ ]rnAB01050201 唐诗选读 work 40 40 [ ]rnBB01040203 影视欣赏 张老师 12 12 [ ]rnrn      确定              取消rnrnrn问题:是否开设,是个复选框,我想点击确定之后,更新这些数据的开设状态.rn应如何实现,知道的谈一下,谢谢
批量提交的问题
Tadodataset能用: tbl1.CancelBatch;rn tbl1.UpdateBatch;批量提交后。rn为什么不能用tbl.delete;rn哪么怎样才能删除记录
发现一个jdbc,preparestatement的问题,jdbc高手进来帮下!
例如!我这样写,string sql="select * from student where id like ?";rn String value="%";rn pstmt.setString(1,value);rnrnrn这样设置完后应该就是把数据库里面的记录全查出来阿,可是一条也查不出来,好像like不能设置? 似的,大家帮我看看到底是我哪里些的有问题,还是jdbc不能这样写,我现在用的是mysql数据库。小弟急等!
asp 批量提交问题
00 张三组 9 7 2 3rn00 李四组 9 2 7 1rn003 王五组 9 9 0 6rn009 机动组 9 5 4 1rn021 设备组 9 8 1 4rn026 材料组 9 6 3 1rn041 维修组 9 9 0 3rn053 填料组 9 9 0 8rnrn以上是我用 group by 第二列 在一张有20多列1000多行中提取的数据,我想直接把这些数据直接放到另外我创建的一张表里,现在字段和对应内容都搞好了,就是不知道该如何提交这些数据?我没用循环的时候只能提交第一行,请问如何批量提交查询出来的这一结果!查询出来结果直接就插入到另外一张表了,中间没有表单介入
AdoDateSet批量提交的问题
我使用ADODataSet,将LockType设置为ltBatchOptimisticrn然后打开这个AdoDataSet,我删除了一条记录之后,调用AdoDataSet的UpdateBatch事件,AdoDataSet.UpdateBatch,可是,我删除的这条记录还是没有从数据库中删除掉,下次打开这个AdoDataSet又出来了,请问这个是什么原因
struts2.x 批量提交问题
[code=HTML]rn rnrn rn rn rn rn rn 删除rn rn rn 编号rn rn rn 用户名rn rn rn 密码rn rn rn 用户类型rn rn rn rn 操作rn rn rn rn rn rn rn rn rn rn rn rn rn 1rn rn rn rn rn rn rn rn rn rn rn rn rn rn 新手上路rn rn rn [rn 修改] [rn 删除]rn rn rn rn rn rn rn rn rn rn rn 2rn rn rn rn rn rn rn rn rn rn rn rn rn rn 新手上路rn rn rn [rn 修改] [rn 删除]rn rn rn rn rn rn rn rn rn rn rn 3rn rn rn rn rn rn rn rn rn rn rn rn rn rn 正式会员rn rn rn [rn 修改] [rn 删除]rn rn rn rn rn rn rn rn rn rn rn 4rn rn rn rn rn rn rn rn rn rn rn rn rn rn 正式会员rn rn rn [rn 修改] [rn 删除]rn rn rn rn rn rn rn rn rn rn rn 5rn rn rn rn rn rn rn rn rn rn rn rn rn rn 金牌会员rn rn rn [rn 修改] [rn 删除]rn rn rn rn rn rn rn rn rn rn rn 6rn rn rn rn rn rn rn rn rn rn rn rn rn rn 新手上路rn rn rn [rn 修改] [rn 删除]rn rn rn rn rnrnrn[/code]rnrn这是html代码 现在提交到了user这个action 的save方法 rnrnuser 是一个实体类,有id(主键),name,password,userType(这个是外键)rnrn请问如何在 action 里面接收这些值呢?
OCCI 批量提交问题
OCCI的executeArrayUpdate()可以实现批量提交,但是可以用于merge语句吗?有没这方面的资料谁能给我发一份。我的邮箱g9.510@163.com。rn谢谢!
struts2 批量提交问题
action:rnrnprivate List list;getter... setter...rnrnjsp:rnrnrnrn这样写有什么不妥?或者漏了什么东西?因为我这样写,文本框里总取不到list的值。rnrn
asp批量提交问题
一 二 三 四 五 六rn 1 1 1 1rn 1 1 1 1rn rn 提交 修改rnrnrn现在可以点‘修改’把一二三四下的数据批量改了(是在库里有数据的情况下,修改五六就不行了),rnrn问题是要实现批量提交了,就是在五下填数据,只提交五,六不影响,rn或填五六的,就只提交五六的,rn原前有数据的、没数据的不影响,只提交当时填入数据的。rn不知道说明白么,帮帮我,求解,.......。rn
高分!批量提交的问题
我需要向某一网站提交一批记录数据,但它只提供单个记录的编辑界面,我可以实现单个记录的自动提交,但批量数据的自动填写单个提交界面提交,会打开很多的窗口,比如:http://www.aaa.aspx?aaa=lll",怎样才能不打开多个窗口,让批量数据通过连接进行上传.
prepareStatement的问题?
public void insertWaferPercent(String lotId, String wafer,rn double originalQty, double actualQty,rn long transRrn) throws LotDAOException rnConnection conn = null;rn PreparedStatement pstmt = null;rnrn String sql =rn "INSERT INTO PERCENTAGE(LOT_ID,WAFER_ID,ORIGINAL_QTY,ACTUAL_QTY,TRANS_RRN) " +rn "VALUES(?,?,?,?,?)";rn Debug.print(sql);rn Debug.print("-----------------------------------------------------------------");rn try rnrn conn = getDataSource().getConnection();rn pstmt = conn.prepareStatement(sql);rnrn pstmt.setString(1,lotId);rn pstmt.setString(2,wafer);rn pstmt.setDouble(3,originalQty);rn pstmt.setDouble(4,actualQty);rn pstmt.setLong(5,transRrn);rn pstmt.execute();rn pstmt.close();rnrn rn catch (SQLException e) rn Debug.print(e);rn throw new LotDAOException("unable to retrive the data." +rn e.getMessage());rn rnrnDB为ORACLE,运行是报错:java.sql.SQLException: ORA-01401: inserted value too large for columnrn数据没有问题,只插了一条记录啊!!!
prepareStatement 的问题
用prepareStatement 设置参数,速度超级慢,还不如直接拼接字符串,有人能告诉我为什么吗?
prepareStatement问题
有代码如下:rn Class.forName("com.mysql.jdbc.Driver").newInstance();rn String url = "jdbc:mysql://localhost/mydb";rn con = DriverManager.getConnection(url,"root","123456");rn psm = conn.prepareStatement("INSERT INTO users VALUES(?,?,?,?,?,?)"); rn psm.setString(1,ID);rn psm.setString(2,password);rn psm.setString(3,name);rn psm.setString(4,sex);rn psm.setLong(5,getDate(date));rn psm.setString(6,descriptioin);rn psm.executeUpdate();rn session.setAttribute("user",ID);rn response.sendRedirect("index.jsp");rn在tomcat8.0中运行报错:rnorg.apache.jasper.JasperException: Unable to compile class for JSP: rnrnAn error occurred at line: 38 in the jsp file: /do_register.jsprnrnrn38行代码为:psm = conn.prepareStatement("INSERT INTO users VALUES(?,?,?,?,?,?)"); rnrn哪里错了?忘高手指点下!谢谢!
jdbc自动提交的问题
if(rs.next())rn rnboolean auto = con.getAutoCommit();rn//System.out.println(auto);rn//con.setAutoCommit(false);rnstmt.addBatch(sql);rnstmt.executeBatch();rncon.commit();rncon.setAutoCommit(auto);rnrnUpdateData.this.jTable.setModel(UpdateData.this.initialTableModel2());rn问: 如果关了自动提交模式,为什么表格里的内容就不会变呢
PrepareStatement的问题
将一个sql语句装为构造函数参数,create一个preparestatement对像,setString将一大堆的参数改变后,exeupdate or executequery,假如后面想不重新new 这个preparestatement对像,如何重新设定一个新的sql templaternrn我试过用rnrnexecuteUpdate(sql)这样的话,新的sql必须是一个不带?号,完整的sql,因为新的sql一设置入去,就立即行了rnrn请问有什么其它法rn
prepareStatement问题?
我在处理如下SQL时候:rnselect DATE_FORMAT(newsTime,'%Y年%m月%d日') as time from NEWS where kindId=?;rn有个动态变量kindId当我用prepareStatement处理时,就取不到time的值,但是当用rncreateStatement()处理时,如rnselect DATE_FORMAT(newsTime,'%Y年%m月%d日') as time from NEWS where kindId='"kindId"';rn就能取到值,我自己猜想是不是用prepareStatement处理时 '和?有冲突,取不到值。
prepareStatement ()
package conn.db;rnimport java.sql.*;rn/**rn....rn....rnConnection conn=null;rn...rn...rnpublic void executeInsert(String sql)rn rn tryrn rn conn=DriverManager.getConnection(sConnStr);rn PreparedStatement stmt=conn.prepareStatement();rn ......rn代码如上 运行结果下:rncannot resolve symbolrnsymbol : method prepareStatement ()rnlocation: interface java.sql.Connectionrn PreparedStatement stmt=conn.prepareStatement();rn ^rn1 errorrn 各位大佬 这个方法还有救吗? 小弟用的是SQL server
批量提交
create or replace procedure clean_alarminfo_histroy --批量提交:为节省执行时间和效率增加了删除批量提交 as pragma autonomous_transaction; n_delete number:=0; p_count number:=3000; begin insert into alarminfohistory...
百度网站批量提交,PING批量提交
百度网站批量提交,PING批量提交,可以瞬间向百度提交大批量网站。加速百度收录。
剖析JDBC代码——简单查询(浅显易懂)——PrepareStatement
1、创建类EmpInfoPrepare,代码如下,附加注释说明: package com.sie.train; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLExc...
JDBC的Preparestatement插入数据 字段总是空的
今天写项目,用了最简单的Preparestatement往数据库里插入数据,结果有一个字段总是空的rn关键代码:rn[color=#FF0000]insert into em_salary_batch (BATCH_ID,HALL_CODE,SALARY_MONTH,INSERT_USER,INSERT_TIME,STATUS) values (?,?,?,?,sysdate,?)[/color][code=java]rnrnrn public static final BigDecimal BATCH_STATUS1 = BigDecimal.valueOf(1); // 等待上传rn public static EmSalaryBatchPK create(EmSalaryBatchVO pEmSalaryBatchVO) throws Exception rn PreparedStatement pst = null;rn ResultSet rs = null;rn String sql = null;rn Connection conn = null;rn EmSalaryBatchPK pk = null;rn try rn conn = DBUtil.getConnection();rn sql = "insert into em_salary_batch (BATCH_ID,HALL_CODE,SALARY_MONTH,INSERT_USER,INSERT_TIME,STATUS) values (?,?,?,?,sysdate,?)";rn pst = conn.prepareStatement(sql);rn int pos = 1;rn pst.setLong( pos++ , pEmSalaryBatchVO.getBatchId());rn pst.setString( pos++ , pEmSalaryBatchVO.getHallCode());rn pst.setString( pos++ , pEmSalaryBatchVO.getSalaryMonth());rn pst.setBigDecimal( pos++ , pEmSalaryBatchVO.getInsertUsr());rn pst.setBigDecimal( pos++ ,BATCH_STATUS1 );rnrn log.info("EmSalaryBatchDAO.算薪状态:" + BATCH_STATUS1);rnrn int nRow = pst.executeUpdate();rn if (nRow != 1) rn String error = "DAOCreate: EmSalaryBatchDAO("rn + pEmSalaryBatchVO.toString() + ") not found";rn throw new Exception(error);rn rn catch (Exception e) rn log.error("DAO Create Error", e);rn throw e;rn finally rn DBUtil.close(rs, pst, conn);rn rn pk = new EmSalaryBatchPK(pEmSalaryBatchVO.getBatchId());rn return pk;rn rn[/code]rn开始我怀疑是Oracle数据库的缓存问题,但是我没有权限清缓存,只能把SQL语句重新排列一下,结果那个字段还是空值。rn用反编译工具把.class文件翻出来看看,没发现哪里有问题,跟源代码没什么差别。rn后来我直接改成拼接SQL语句,把values的值都写死了,结果这次那个字段就有值了,这是什么奇怪的问题?有没有遇到过啊。
jdbc使用prepareStatement实现简单的转账功能
jdbc使用prepareStatement实现转账功能不足的地方请大神指点
java连接数据库的jdbc技术之preparestatement的相关操作
以mysql数据库为基础,用junit做jdbc技术之preparestatement的相关测试,以及探讨statement和preparestatement在获取自动增长列的值时和executeBatch操作的区别。 该测试所需的表book和stud,建表语句如下: CREATE TABLE `book` (     `id` int(11) NOT NULL AUTO_INCREMENT,
jdbc里面Statement和prepareStatement有什么区别啊?
使用jdbc编程时,是看了教程后,就或者用Statement或者用prepareStatement了。rn一直没深究其中有什么区别。今天偶然想到这个问题,有人回答下,解决下疑问吗?
hibernate和jdbc的批量问题一系列问题
1.rnpublic static void insertByBatch(int num) rnlong d1 = System.currentTimeMillis();rnsession = HibernateSessionFactory.getSession();rnts = session.beginTransaction();rntry rnfor (int i = 0; i < num; i++) rnPerson p=new Person();rnString z=Integer.toString(i);rn//p.setId(z);rnp.setName(z);rnsession.save(p);rnrnif (i % 50 == 0) rnsession.flush();rnsession.clear();rnrnif(i%500==0)rnSystem.out.println("提交一次");rnts.commit();rnrnrnts.commit();rn catch (Exception e) rne.printStackTrace();rnts.rollback();rn finally rnif (session != null) rnHibernateSessionFactory.closeSession();rnrnrnlong d2 = System.currentTimeMillis();rnSystem.out.println("用时为:" + (d2 - d1));rnrn结果数据库里面就只有一条数据??rnorg.hibernate.TransactionException: Transaction not successfully started异常rnrn2. rnhibernate怎么设置自动提交rnjdbc:conn.setattribute(false);rnhibernate???rnrn3. rn3.1.在循环里面加个rnif(i/50==0)rnsession.flush();rnsession.clear();rnrn3.2rnhibernate.cfg.xml配置文件里面的rn50语句rn这2种方法是不是只要一个就可以了,还是2个都加上去?rn4.rnpublic void insertByBatch(int num) rn//conn.setAutoCommit(false);rnlong d1 = System.currentTimeMillis();rnint z=num+1;rntry rn//i<1000rnconn.setAutoCommit(false);rnfor (int i = 0; i < num / 50; i++) rnfor (int j = 0; j < 50; j++) rnString sql = "insert into t_person values(?,?)";rnpstmt = conn.prepareStatement(sql);rnString s = Integer.toString(--z);rnpstmt.setString(1, s);rnpstmt.setString(2, s);rnpstmt.addBatch();rnSystem.out.println(z);rnrnpstmt.executeBatch();rnconn.commit();rnrnrn catch (SQLException e) rn// TODO Auto-generated catch blockrne.printStackTrace();rnrnlong d2 = System.currentTimeMillis();rnSystem.out.println("执行时间为: " + (d2 - d1));rnrn最后结果只插入1000条rn怎么不是5万条呀?
jdbc中LIKE条件如何使用prepareStatement?
哪个%加在哪里呢?rnrn不是语法错误,就是找不到记录。rnrnselect * from gds_treetab where name LIKE ?rnrnpstmt.setString(1,"'%"+name+"%'");rnrn应该怎样改
JDBC连接mysql数据库及PrepareStatement的作用及原理
java连接mysql数据库,首先需要引入mysql-connection-java.jar包,前面的博客中给大家分享了mysql-connection-java-5.1.28.jar包,有需要的自行下载。好了,上代码 //准备四大参数 String driverClassName=&quot;com.mysql.jdbc.Driver&quot;; String url=&quot;jdbc:mysql://localh...
关于FORALL 批量提交问题
听说forall 批量提交能提高效率,把所有数据都放到嵌套表再提交rn但是数据量要是有1000万的话,内存不是溢出了吗?rnforall 有没有内存大小的限制?或者1000万的批量提交适合forall吗?
关于批量数据提交的问题
程序设计中我遇到要求批量提交数据,大家知道可以使用rn 交易来处理,我一次要提交好多行数据,请问updateBacth中rn 重复使用AddNew 是否对性能有影响?rn 各位是否有更好的解决批量提交数据的方法?rn
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表

相似问题

6
关于”找不到适合JDBC的驱动程序: MySQL80“的问题
8
jsp页面提交后如何将信息传到另一个jsp页面并将数据存储到数据库
4
如何从jsp页面向mysql按条件更新数据
15
关于从jsp页面提交数据到数据库出现乱码的问题
8
mybatis执行sql异常,实在找不出问题出在哪了!
9
java jdbc查询卡住 在for循环到某一个的时候卡住了
3
jdbc连接报错超出准备语句的最大数量,这是数据库超过最大连接数了么?
3
求助:SSM用c3p0连接mysql时Could not get JDBC Connection
1
mysql在PrepareStatement中表名的动态表示为什么有时可以
1
java中的PreparedStatement对%百分号的处理?
2
JDBC查询一条记录,为什么要将列别名和值先存到Map对象中,而不是直接给实体类对象的字段赋值呢?
2
Exception in thread "main" java.lang.AbstractMethodError
0
SpringBoot 热部署 重启后 一只不停的包JDBC连接 问题
2
为什么使用@Autowired注入xml里的BasicDataSource会出现空指针异常?
4
JDBC连接Mysql出现问题!
3
JAVA中使用JDBC做批量处理时,没有报错,但是数据没有插入数据库 插入数据显示0条
3
IDEA SSM 疯狂500,下面是错误报告
3
java问题一个系统的操作日志怎么推送给另一个系统,有什么设计思路吗
3
Java中数据库连接关闭之后无法重新连接上;
2
为什么SQL语句在MySQL中可以输出,在mybatis中不行报错Exception: Cannot find class: ${driver}