jdbc基础 (四) 批处理
批处理,就是字面上的意思,一次性处理一批sql语句。
直接看例子吧:
package com.cream.ice.jdbc; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement; import org.junit.Test; /**
*
* 假设已经存在表test:
* create table test(
* id int primary key,
* name varchar(20)
* );
*
* @author ice
*
*/ public class Batch {
private Connection connection;
private Statement statement;
private PreparedStatement preStatement;
private ResultSet resultSet; /**
* 向ttest中插入2条记录,删除掉第1条
* 由于批处理的多条语句不同,所以使用Statement进行批处理
*/
@Test
public void testBatch1() {
try {
connection = JdbcUtils.getConnection();
statement = connection.createStatement(); String sql1 = "insert into test (id,name) values(1,'Tom')";
String sql2 = "insert into test (id,name) values(2,'Jack')";
String sql3 = "delete from test where id=1"; // 内部维护了一个List,将sql语句加到List中
statement.addBatch(sql1);
statement.addBatch(sql2);
statement.addBatch(sql3); // 执行批处理
int num[] = statement.executeBatch(); // i为每条语句影响到的行数
for (int i : num)
System.out.print(i + " "); } catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.releaseResources(null, statement, connection);
}
} /**
* 向test中插入100条记录
* 由于语句完全相同,只是参数不同,使用PreparedStatement
*/
@Test
public void testBatch2() {
try {
connection = JdbcUtils.getConnection(); String sql = "insert into test (id,name) values(?,?)"; preStatement = connection.prepareStatement(sql); // 要插入100条记录
for (int i = 0; i < 100; i++) {
preStatement.setInt(1, i + 1);
preStatement.setString(2, "No." + (i + 1));
preStatement.addBatch();
} // 执行批处理语句
preStatement.executeBatch(); statement=connection.createStatement();
resultSet=statement.executeQuery("select * from test"); //将插入记录打印到控制台上
while(resultSet.next()){
System.out.print("id:"+resultSet.getInt("id")+" ");
System.out.println("name:"+resultSet.getString("name"));
} } catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.releaseResources(null, preStatement, connection);
JdbcUtils.releaseResources(resultSet, statement, connection);
}
}
}
代码里使用了工具类JdbcUtils,可参阅jdbc基础 (二) 通过properties配置文件连接数据库中的实现。
第一个例子中由于批处理的多条语句不同,所以使用Statement进行批处理。
第二个例子中由于语句完全相同,只是参数不同,使用PreparedStatement来处理。
这里值得注意的是,在第二个例子中,如果批处理语句数量不是100,而是达到几十万或上百万条,则在mysql中是极为耗时的,需要若干小时才可处理完,但如果换成oracle数据库,只需几十秒便可完成。
jdbc基础 (四) 批处理的更多相关文章
- JDBC 基础知识总结
1. 何谓JDBC --- Java Database Connectivity. 由Sun 公司提供的访问数据库的一组java类和接口,用来对数据库进行链接.发送SQL语句.处理返回结果,为开发 ...
- JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务
JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Bootstrap<基础四> 代码
Bootstrap 允许您以两种方式显示代码: 第一种是 <code> 标签.如果您想要内联显示代码,那么您应该使用 <code> 标签. 第二种是 <pre> 标 ...
- jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用
一.连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数 ...
- jdbc基础 (三) 大文本、二进制数据处理
LOB (Large Objects) 分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...
- jdbc基础 (二) 通过properties配置文件连接数据库
csdn博文地址:jdbc基础 (二) 通过properties配置文件连接数据库 上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用. 因为jdbc对数据库的驱动加载.连接 ...
- JDBC基础教程
本文实例讲述了JDBC基础知识与技巧.分享给大家供大家参考.具体分析如下: 1.什么是JDBC? 通俗来讲JDBC技术就是通过java程序来发送SQL语句到数据库,数据库收到SQL语句后执行,把结果返 ...
- Python 基础 四 面向对象杂谈
Python 基础 四 面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...
随机推荐
- The Monocycle(BFS)
The Monocycle Time Limit: 3000MS64bit IO Format: %lld & %llu [Submit] [Go Back] [Status] Des ...
- Vbox 安装 OS X 10.11
http://bbs.pcbeta.com/viewthread-1635810-1-1.html http://ibiji.org/post/26.html 破解 Vbox 下OS 限制登录 V ...
- DW与DM
DW组成部分简介 DW的组成部分有:针对数据源的分析.数据的ETL.数据的存储结构,元数据管理等. 数据源分析 主要是分析要抽取哪些数据,如何抽取(全量还是增量)?它的更新周期是怎么样的?它的数据质量 ...
- DB String Split sample
以sqlserver为例进行说明,代码稍加修改,可以用于ORACLE. 字符串的拆分和聚合是数据库开发人员比较常见的任务. 关于字符串的聚合和拆分,sqlserver的标准解决方案是for xml p ...
- MIT jos 6.828 Fall 2014 训练记录(lab 3)
注:源代码参见我的github: https://github.com/YaoZengzeng/jos Part A : User Environments and Exception Handlin ...
- 【MVC 4】1.第一个 MVC 应用程序
作者:[美]Adam Freeman 来源:<精通ASP.NET MVC 4> ASP.NET MVC 是微软的一个 Web开发框架,它整合了“模型—视图—控制器(MVC)”架构 ...
- 【SQL 代码】Sql分页(自用)
效果图: 下面是存储过程的创建,用的时候调用就行了 /****** Object: StoredProcedure [dbo].[spSqlPageByRownumber] Script Date: ...
- UVA 12266 Stock prices --优先队列
优先队列. 做法:维护两个优先队列:quesell 和 quebuy, 一个是小值优先,一个是大值优先.每次push的时候,都取各自的Top元素,比较价格,如果卖的比卖的出价低,则成交,各自的要买 ...
- oracle wm_concat(column)函数的使用
oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并,如果您对oracle wm_concat(c ...
- VideoView 播放资源目录raw下的视频
你把影片copy到res/raw下!檔名小寫加底線,例如:default_video.3gp,在程式碼裡指定uri路徑 String uri = "android.resource://&q ...