用JDBC进行批处理
来源:互联网 发布:java基础教程 毕向东 编辑:程序博客网 时间:2024/05/16 08:48
当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用 JDBC处理机制,以提升执行效率
实现批处理有两种方式,第一种方式:
Statement.addBatch(sql) list
执行批处理SQL语句
executeBatch()方法:执行批处理命令
clearBatch()方法:清除批处理命令
实现批处理的第一种方式(Statement方式):
package cn.itcast.jdbc;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import org.junit.Test;import cn.itcast.utils.JdbcUtils;/* create table testbatch( id int primary key, name varchar (40)); */public class Demo3 {//实现批处理的第一种方式@Testpublic void test1() throws Exception{Connection conn =null;Statement st =null;ResultSet rs =null;try{conn =JdbcUtils.getConnection();String sql= "insert into testbatch(id,name) values (3,'aaaa')";String sq2= "update testbatch set name='ccccd' where id=3";st=conn.createStatement();st.addBatch(sql);//把sql语句加载到statement维护的集合中st.addBatch(sq2);st.executeBatch(); //返回数组,数组中的元素用来保存执行sql语句影响的行数}catch (Exception e){e.printStackTrace();}finally{JdbcUtils.release(conn, st, rs);}}}
采用以上方式实现批处理:
优点: 可以向数据库发送多条不同的SQL语句。
缺点: SQL语句没有预编译。
当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很多sql语句。例如:
Insert into user(name,password) values('aa','111111');
Insert into user(name,password) values('bb','222222');
Insert into user(name,password) values('cc','333333');
实现批处理的第二种方式(PreparedStatement方式):
//实现批处理的第二种方式@Testpublic void test2(){//记录时间long starttime=System.currentTimeMillis();Connection conn =null;PreparedStatement st =null;ResultSet rs =null;try{conn =JdbcUtils.getConnection();String sql= "insert into testbatch(id,name) values (?,?)";st=conn.prepareStatement(sql);for(int i=0;i<100000;i++){ //加入10万条数据st.setInt(1,i);st.setString(2,"aa"+1);st.addBatch(); //把这条sql加入到集合中if(1%1000==0){st.executeBatch();//每次执行1000条sql语句st.clearBatch();//清除sql语句以循环下一批sql语句}}st.executeBatch();}catch (Exception e){e.printStackTrace();}finally{JdbcUtils.release(conn, st, rs);}//结束时间long endtime =System.currentTimeMillis();System.out.println("共花费:"+(endtime-starttime)/1000+"秒");}结论:如果执行的sql语句是不一样的,那就用Statement做批处理。
如果执行的sql语句是一样的,那就用PreparedStatement做批处理。
- 用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- 使用JDBC进行批处理
- javaEE 使用JDBC进行批处理
- 使用JDBC进行批处理Batch
- JDBC操作MySQL进行批处理
- 使用JDBC进行数据库的批处理
- Delphi中canvas(画布)的运用
- java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for /package
- Java打印蛇形矩阵
- Javascript的prototype的研究
- Ogre笔记二:基础教程一—场景管理器、场景节点和实体
- 用JDBC进行批处理
- Google向HTC提供专利 助其起诉Apple
- poj1523割点&&块
- VC下Debug和Release区别
- xp中iis访问错误:用户过多 解决方法
- SQLite 引用属性 文件属性如何设置!?
- 数据库SQL运用(1)
- 对于setComponentEnabledSetting的副作用了解
- 在ASP.NET中记录错误日志