PreparedStatement 和 Statement 实现基本的批处理
批处理:若需要对数据库进行多步操作,则就没必要每次都和数据库进行一次通信,这样很消耗资源和时间。则需要将操作进行批处理;
Statement方式来实现批处理
优点:
可以包含结构不同的sql语句
缺点:
不能防止sql注入攻击
没有预编译机制, 效率低下
如果发送的sql语句主干部分相同, 主干部分每次都需要写.
PreparedStatement方式实现批处理
优点:
可以防止sql注入攻击
采用预编译机制, 效率高
如果发送的sql语句主干部分相同, 主干部分只需要写一次, 每次发送的只是参数部分.
缺点:
包含的sql语句的主干部分必须相同
PreparedStatement 实现基本的批处理:
public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///mydb5","root","admin");
//开始事务
conn.setAutoCommit(false);
String sql = "insert into tb_batch values (null,?)";
ps = conn.prepareStatement(sql);
for(int i=2000;i<3000;i++){
ps.setString(1, "tong"+i);
ps.addBatch();
}
ps.executeBatch();
//提交事务
conn.commit();
System.out.println("完成???????????");
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCutils.closeResou(conn, ps, null);
}
}
Statement 实现基本的批处理:
public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
//注册驱动和连接数据库
conn = JDBCutils.getConn();
try {
stat = conn.createStatement();
stat.addBatch("drop database if exists mydb5");
stat.addBatch("create database mydb5");
stat.addBatch("use mydb5");
stat.addBatch("create table tb_batch(id int primary key auto_increment, name varchar(20))");
stat.addBatch("insert into tb_batch values(null,'a')");
stat.addBatch("insert into tb_batch values(null,'b')");
stat.addBatch("insert into tb_batch values(null,'c')");
stat.executeBatch();
System.out.println("完成");
} catch (Exception e) {
e.printStackTrace();
}finally{
JDBCutils.closeResou(conn, stat, null);
}
}
注:JDBCutils.closeResou这个是自定义的一个JDBC工具类。主要是用来关闭资源和建立连接。
http://www.cnblogs.com/tongxuping/p/6880315.html ---> JDBCutils自定义的工具类包
PreparedStatement 和 Statement 实现基本的批处理的更多相关文章
- PreparedStatement与Statement的区别
PreparedStatement与statement的区别 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 2.使用 Statement 对象 ...
- preparedStatement和Statement 有什么不一样
1. PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象. 2.作 ...
- JDBC 中preparedStatement和Statement区别
一.概念 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement.PreparedStatement 和 CallableStatement三种方式 ...
- Java中PreparedStatement与Statement的总结
概要: PreparedStatement 接口继承自 Statement 接口,PreparedStatement 比普通Statement 对象使用起来更加灵活,更有效率. 一.PreparedS ...
- JDBC增删改查,PreparedStatement和Statement的区别
此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的 具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写. 上一篇地址htt ...
- PreparedStatement和Statement的区别
转自:http://blog.sina.com.cn/s/blog_77eba18f01019csh.html 1. PreparedStatement接口继承Statement, PreparedS ...
- 应该始终以PreparedStatement代替Statement
在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement 一.代码的可读性和可维护性.虽然 ...
- Java中PreparedStatement和Statement的用法区别(转)
1. PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象. 2.作为 ...
- JDBC中PreparedStatement和Statement的区别
共同点: PreparedStatement和Statement都是用来执行SQL查询语句的API之一. 不同点: 在PreparedStatement中,当我们经常需要反复执行一条结构相似的sql语 ...
随机推荐
- 玩Vim
1)我一个脚本中粘贴的都是当年在vim下粘的东西,都是带行号的,我现在想把所有的行号都换成回车键,要怎么办呢? %s/[0-9]/^M/g 注:其中回车在vim的输入方法是ctrl+V,会得到^,此时 ...
- js阻止冒泡事件和默认事件的方法
阻止默认事件 function stopDeFault(e){ if(e&&e.preventDefault){//非IE e.preventDefault(); }else{//IE ...
- 隐马尔可夫模型HMM
隐马尔可夫模型HMM的探究 1 HMM基本概念1.1 定义1.2 观测序列生成过程1.3 HMM的三个问题2 概率计算算法2.1 直接计算算法2.2 前向算法forward algorithm2.3 ...
- 数据结构—队列(Queue)
队列的定义--Queue 队列是只允许在表的队尾插入,在表的队头进行删除.队列具有先进先出的特性(FIFO, First In First Out). 队列提供了下面的操作 q.empty() 如果队 ...
- ASP.NET页面之间传值Server.Transfer(4)
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效. Serve ...
- POJ 3693 Maximum repetition substring(最多重复次数的子串)
Maximum repetition substring Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10461 Ac ...
- Winpcap网络开发库入门
原文链接地址:http://www.cnblogs.com/phinecos/archive/2008/10/20/1315176.html Winpcap是一个强大的网络开发库,可以实现许多功能:获 ...
- 【BZOJ 3907】网格 组合数学
大家说他是卡特兰数,其实也不为过,一开始只是用卡特兰数来推这道题,一直没有怼出来,后来发现其实卡特兰数只不过是一种组合数学,我们可以退一步直接用组合数学来解决,这道题运用组合数的思想主要用到补集与几何 ...
- Install the AWS Command Line Interface on Linux
Install the AWS Command Line Interface on Linux You can install the AWS Command Line Interface and i ...
- Java类的声明和访问介绍
1.类的声明 类本身的声明:对类的声明来说,主要包括类的访问权限声明和非访问修饰符的使用.对于一个普通的Java类(POJO)来说,主要的访问权限修饰符只有两个public和默认权限,内部类可以有pr ...