jdbc的批处理

问题描述

第一个没用批处理,时间反而短。。。第二个用了批处理,时间反而长publicstaticvoidadd1(){Connectionconn=null;PreparedStatementps=null;try{conn=DBManager.getConection();Stringsql="insertintouser1values(?,?)";longbegin=System.currentTimeMillis();ps=conn.prepareStatement(sql);for(inti=1;i<10000;i++){ps.setString(1,"name"+i);ps.setInt(2,i);ps.executeUpdate();}longend=System.currentTimeMillis();System.out.println(end-begin);//时间8790//批处理publicstaticvoidadd2()throwsSQLException{Connectionconn=null;PreparedStatementps=null;conn=DBManager.getConection();Stringsql="insertintouser1values(?,?)";longbegin=System.currentTimeMillis();ps=conn.prepareStatement(sql);for(inti=1;i<10000;i++){ps.setString(1,"name"+i);ps.setInt(2,i);ps.addBatch();if((i+1)%1000==0){ps.executeBatch();ps.clearBatch();}ps.executeUpdate();}longend=System.currentTimeMillis();System.out.println(end-begin);时间24536不知道我哪里写错了。。新手。。谢谢

解决方案

解决方案二:
//批处理publicstaticvoidadd2()throwsSQLException{Connectionconn=null;PreparedStatementps=null;conn=DBManager.getConection();Stringsql="insertintouser1values(?,?)";longbegin=System.currentTimeMillis();ps=conn.prepareStatement(sql);for(inti=1;i<10000;i++){ps.setString(1,"name"+i);ps.setInt(2,i);ps.addBatch();if((i+1)%1000==0){ps.executeBatch();ps.clearBatch();}ps.executeUpdate();//楼主这里是什么意思啊用ps.executeBatch();试试}longend=System.currentTimeMillis();System.out.println(end-begin);
解决方案三:
刚刚说错了//批处理publicstaticvoidadd2()throwsSQLException{Connectionconn=null;PreparedStatementps=null;conn=DBManager.getConection();Stringsql="insertintouser1values(?,?)";longbegin=System.currentTimeMillis();ps=conn.prepareStatement(sql);for(inti=1;i<10000;i++){ps.setString(1,"name"+i);ps.setInt(2,i);ps.addBatch();if((i+1)%1000==0){ps.executeBatch();ps.clearBatch();}}ps.executeBatch();longend=System.currentTimeMillis();System.out.println(end-begin);

你每次循环里面调用ps.executeUpdate();等于没有批量更新
解决方案四:
for(inti=1;i<10000;i++){ps.setString(1,"name"+i);ps.setInt(2,i);ps.addBatch();}ps.executeUpdate();
解决方案五:
for(inti=1;i<10000;i++){ps.setString(1,"name"+i);ps.setInt(2,i);ps.addBatch();}ps.executeBatch();
解决方案六:
在javaEE中,通过浏览器浏览:http://127.0.0.1/TestApp/HelloServlet,(HelloServlet配置完全正确,并之前已经加载HelloServlet的实例),

时间: 2024-10-22 12:17:45

jdbc的批处理的相关文章

JDBC的批处理操作三种方式

SQL批处理是JDBC性能优化的重要武器,经本人研究总结,批处理的用法有三种. package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; /** * JDBC的批量操作三种方式 * * @auth

Java批处理

批处理 JDBC对批处理的操作,首先简单说一下JDBC操作sql语句的简单机制. JDBC执行数据库操作语句,首先需要将sql语句打包成为网络字节流,传递给数据库,数据库经过解包,然后编译sql语句,最后执行,然后将结果通过字节流的形式返回给JDBC API,简单的来说大致分为以下几点: Ø JDBC打包sql语句: Ø 发送字节流至数据库: Ø 数据库解包: Ø 检查sql语法,编译sql: Ø 执行sql语句: Ø 将sql语句返回给JDBC 接口: 如果我们需要插入成千上万甚至更多的数据库

JDBC技术总结(二)

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51317001 目录(?)[+]         上一节主要讲了JDBC的基本操作,这一节主要总结一下JDBC如何处理大文本.如何处理图片以及进行批处理. 1.JDBC处理大文本         在MySQL中,大文本是text类型,使用Java操作数据库中的大文本需要两个方法setCharacterStream和getCharacterStream,一个是写

SQL批处理与事务控制

今天我想要分享的是关于数据库的批处理与事务的控制.批处理对于项目的实际应用有非常大的具体意义. 一.批处理部分 首先我们新建一个表:  create table t3(id int primary key auto_increment,name varchar(100)); 注意:auto_increment只适用于mysql中,对于oracle需要用的是创建一个序列来实现自动增长:create squences seq_t3_id  start with 1 increment by 1;这里

Java程序员在写SQL程序时候常犯的10个错误

  Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用"模式-模式",举个例子,模式可以应用到任何地方,而且都可以归为某一类模式) 心境(首先,要写个好的面向对象程序是比命令式程序难的多,你得花费一些功夫) 但当Java程序员写SQL语句时,一切都不一样了.SQL是说明性语言而非面向对象或是命令式编程语言.在SQL中要写个查询语句是很简单的.但在Java里类似的语句却不

收藏 用JAVA获取了RSS的资源,但如何把这些都保存到数据库?

问题描述 package com.ttol.spider;import java.io.IOException;import java.net.URL;import java.util.List;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;public class SipderRss {/** * @param arg

Hibernate批量处理海量数据的方法_java

本文实例讲述了Hibernate批量处理海量数据的方法.分享给大家供大家参考,具体如下: Hibernate批量处理海量其实从性能上考虑,它是很不可取的,浪费了很大的内存.从它的机制上讲,Hibernate它是先把符合条件的数据查出来,放到内存当中,然后再进行操作.实际使用下来性能非常不理想,在笔者的实际使用中采用下面的第三种优化方案的数据是:100000条数据插入数据库, 需要约30分钟,呵呵,晕倒.(本人10分钟插入1000000条数据(字段比较小)) 总结下来有三种来处理以解决性能问题:

jdbc-关于 JDBC批处理的问题【求助】

问题描述 关于 JDBC批处理的问题[求助] 我直接帖代码吧 public void batchUpdateXfen(String sql, List<XfenStats> list) { Session session = getHibernateTemplate().getSessionFactory().getCurrentSession(); Connection con= session.connection(); PreparedStatement stmt = null; int

jdbc批处理的addBatch问题

问题描述 jdbc批处理的addBatch问题 preparedstatement = connection.prepareStatement(sql.toString()); for (int i = 0; i < list.size(); i++) { Map map = list.get(i); Set<Entry> entries = map.entrySet(); for (Entry entry : entries) { preparedstatement.setString