如何使用JDBC进行批处理?
业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。
实现批处理有两种方式,
第一种方式: Statement.addBatch(sql) (其实是将sql语句 放在了一个 list 集合中。)
第二种方式: PreparedStatement.addBatch() (其实是将sql语句 放在了一个 list 集合中。)
执行批处理SQL语句
executeBatch()方法:执行批处理命令
clearBatch()方法:清除批处理命令(实际上是清除 List集合中的SQL语句,否则会造成内存溢出。)
接下去比较2种方法的优缺点,可以更好的在实际工作场景中得以更好的应用。
第一种方式:Statement.addBatch(sql)
采用Statement.addBatch(sql)方式实现批处理的优缺点
优点:可以向数据库发送多条不同的SQL语句。
缺点:SQL语句没有预编译。当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很多条SQL语句。
Demo样例:
@Test
public void test1() throws SQLException{
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
String sql1 = "insert into user(name,password,email,birthday) values('kkk','123','abc@sina.com','1978-08-08')";
String sql2 = "update user set password='123456' where id=3";
st = conn.createStatement();
st.addBatch(sql1); //把SQL语句加入到批命令中
st.addBatch(sql2); //把SQL语句加入到批命令中
st.executeBatch();
st.clearBatch();
} finally{
JdbcUtil.free(conn, st, rs);
}
}
方法二、实现批处理的第二种方式:PreparedStatement.addBatch()
优点:发送的是预编译后的SQL语句,执行效率高。
缺点:只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。
Demo样例:
@Test
public void test2() throws SQLException{
conn = JdbcUtil.getConnection();
String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)";
st = conn.prepareStatement(sql);
for(int i=0;i<50000;i++){
st.setString(1, "aaa" + i);
st.setString(2, "123" + i);
st.setString(3, "aaa" + i + "@sina.com");
st.setDate(4,new Date(1980, 10, 10));
st.addBatch();
if(i%1000==0){ //为防止(list集合) 内存溢出:设定每累加1000条数据就向数据库发送一次
st.executeBatch();
st.clearBatch();
}
}
st.executeBatch(); //当剩余的条数小于1000条时就不会被发送到数据库,所以此处要在发送一次。
}
分享到:
相关推荐
java代码-使用java解决数据库批处理的源代码 ——学习参考资料:仅用于个人学习使用!
Java高效实现批处理Excel数据导入数据库代码
实现了当有大数据量需要与数据库交互时,高效的处理操作。
NULL 博文链接:https://wang-z-p2007.iteye.com/blog/908042
自己写的一个小工具可以检测dbf文件是否有变化,并且导入数据库,自动执行附带jar 和 批处理
该类中包含有多个方法对数据库中的clob字段进行查询、插入、事物处理、批处理、调用存储过程等操作。使用的是myeclipse8.6,oracle11g,测试的时候执行手动建个表xml_buffer,包含id、xmlcontent字段即可,然后在...
本项目是一个基于Java语言开发的Sagacity SQLToy数据库查询优化工具,包含420个文件,主要文件类型包括Java源代码、XML配置文件、BAT批处理文件、文本文件、Git忽略文件、Markdown文档、图片、属性文件和XSD文件。...
5.数据库 6.web技术 7.java编程 8.基础知识 9.网络技术 10.apache-struts 11.j2ee架构与模式 12.Log4j 13.Eclipse 14.Svn 15.Xml 16.Tapestry 17.Junit 18.Ejb 19.Spring 20.Unix 21.Vss 22.Jbuilder 23.ireport + ...
本源码提供了一个基于Java的Mycat-Server数据库集群设计。项目包含630个文件,其中包括555个Java源文件、15个XML文件、14个HTML文件、8个属性文件、8个BAT批处理文件、8个Shell脚本文件、5个PNG图片、2个Markdown文...
针对oracle开机占了大量内存,可将oracle相关服务设置为手动启动,需要时再打开,用批处理的形式就不必再进行繁琐的操作了。 使用时先将orcl改为自己的服务名。然后双击即可运行,选择1为启动oracle服务,选择2为...
Oracle服务都是手动启动、关闭,每次都需要一个个启动比较麻烦,自然就想到到了批处理文件管理,这个是我写的一个批处理文件,希望对大家有用了。
用JAVA编写的SQL数据库连接工具,可连接MS SQL ,My SQL 。以打包,WinXP双击即可运行,类UNIX下需解压出压缩包内的SQL.jar文件和lib文件夹。编译环境:NetBeans 5.5,jdk1.5.0_04 ;Win XP(Win 2003 SP1 )下运行...
5.数据库 6.web技术 7.java编程 8.基础知识 9.网络技术 10.apache-struts 11.j2ee架构与模式 12.Log4j 13.Eclipse 14.Svn 15.Xml 16.Tapestry 17.Junit 18.Ejb 19.Spring 20.Unix 21.Vss 22.Jbuilder 23.ireport + ...
教程名称: 【动力节点】Java经典教程_JDBC视频教程 本套Java视频教程中讲解了Java编程语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了...
批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和回滚transaction.java; 使用PreparedStatement,动态执行sql语句,UsingPreparedStatement.java; 读写二进制数据,Binary...
mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁) 1、mybatis批处理 2、数据分批量查询 3、数据分批量插入
主要是java用数据连接池进行对myslq数据库的主要操作;同时还有关批处理和事务
软件分【执行程序 Midp2Exe.exe】【数据库文件 MidpRuntimeDLL.dll】【批处理文件 ★自动打包★.bat】三部分。 【执行程序 Midp2Exe.exe】是一个DOS可执行文件,需要在DOS环境下执行,对没有DOS使用经验的人来说,...
程序具体功能为借助sqluldr,自动生成批处理bat文件,java再去执行bat,导出CSV,支持批量导出,需在XML配置,批量上传也已经实现,该程序已经封装好了,下载后直接点击*.jar即可执行,会出现swing窗口,数据库切记要...
无论是b/s还是c/s的开发中,基本上不使用javascript来对数据库进行操作。而我了印证我的一个想法,需要往数据库增加大量的新闻类信息,因此,我想从各个rss站点上获取信息并将信息导入到数据库里去。其实我也可以...