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语 ...
随机推荐
- 解析LINQ To Object
1.解剖Linq to object 此文转载自http://www.cnblogs.com/irenebbkiss/p/4155480.html LINQ想必大家都不陌生了,它 的出现使得我们的 ...
- spring中context:property-placeholder
发现网上对于这个标签的解释过于复杂,这里从实用性角度简短的进行说明. 首先,它是spring3中提供的标签. 只需要在spring的配置文件里添加一句: <context:property-pl ...
- 在程序内部跳转到下一个页面 和 向另一个servlet发起跳转
request.getRequestDispatcher("/success.html").forward(request,response); request.getReques ...
- Luogu3960 NOIP2017列队(splay/线段树)
令splay中的一个点表示一段区间,需要使用其中某个点时将区间分裂即可,剩下的都是splay的基本操作了.写的非常丑陋,注意细节.感觉考场上肯定只能靠部分分苟活了.想起来去年因为各种莫名其妙的原因50 ...
- java高精度类尝试
java高精度尝试, poj2109,比较坑的题目 import java.io.*; import java.util.*; import java.math.*; public class Mai ...
- Brainf**k(一位数求max)
题目大意:给你两个一位数,要你求出其中的较大值(使用$Brainf**k$) ($Brainf**k$简介,相当于有一个数组和一个指针,","为把数组当前位赋值为读入的数,&quo ...
- EOS docker开发环境
EOS Wiki提供了有关如何使用docker容器编译最新版本代码的说明.但可能有它自己的一些问题,因此我们鼓励你在学习时引用下面镜像.这样最初会更容易,更快. 如果你还没有安装docker,请在此处 ...
- 【BZOJ 2822】[AHOI2012]树屋阶梯 卡特兰数+高精
这道题随便弄几个数就发现是卡特兰数然而为什么是呢? 我们发现我们在增加一列时,如果这一个东西(那一列)他就一格,那么就是上一次的方案数,并没有任何改变,他占满了也是,然后他要是占两格呢,就是把原来的切 ...
- 如何把SSL公钥和私钥转化为PFX格式
1.登陆 https://myssl.com/cert_convert.html 2.原格式选择为 “PEM”,目标格式选择为 “PKCS12” 3.上传cer到 ”证书文件“,上传key到 ”私 ...
- React 入门小结
前段时间用 Ant Design 做了一个项目,由于之前没有 React 基础,对于 ES6 也是一知半解,所以也是一边开发一边学习,好不容易把项目完成了,现在终于有时间沉下心来从头开始好好学一下 R ...