日期:2014-05-16 浏览次数:20503 次
1. 业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率。
l 实现批处理有两种方式,第一种方式:
? Statement.addBatch(sql) list
? 优点:可以向数据库发送多条不同的SQL语句。
? 缺点:SQL语句没有预编译。当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很多条SQL语句。
l 执行批处理SQL语句
? executeBatch()方法:执行批处理命令
? clearBatch()方法:清除批处理命令
l 实现批处理的第二种方式:
? PreparedStatement.addBatch()
? 优点:发送的是预编译后的SQL语句,执行效率高。
? 缺点:只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。
2. 实际案例分析
题目:新建一个用户表person,包括的字段有id,name,headimg,intro。其中heading的类型为blob,intro的类型为text,使用jdbc完成这样一个需求,向用户表中插入三条记录。
// 一般做法:
packagecom.zuoye;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileReader;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importcom.Db.DbManager;
publicclass Person {
public void insert(){
Connection con =DbManager.getConnection();
PreparedStatement st = null;
try {
String sql = "insert into personvalues(?,?,?,?)";
st = con.prepareStatement(sql);
File f1 = newFile("src/Eclipse.txt");
File f2 = newFile("src/1.jpg");