使用JDBC进行数据库的批处理:
优点:可以向数据库中发送多条不同的sql语句。
缺点:1、sql语句没有预编译
2、当前数据库发送多条语句相同,但仅参数不同的sql语句时,需重复写上很多条sql语句。
代码的编写实现:
向数据库中新建表:
create table testbatch
(
id int primary key,
name varchar(100)
) ;
Java代码的实现:
//批处理 的操作实现一:
public void testBatch(){
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
//获取连接
con = DBManager.getConnection();
//编写sql语句
String sql1="insert into testbatch value(1,'aaa')";
String sql2="insert into testbatch value(2,'fff')";
String sql3="delete from testbatch where id=1";
//创建预处理对象
st=con.createStatement();
//向批命令中添加sql语句
st.addBatch(sql1);
st.addBatch(sql2);
st.addBatch(sql3);
st.executeBatch();//执行批处理命令
st.clearBatch();//将加入到批中的sql语句清掉
//释放资源
DBManager.release(con, st, rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//实现二:
public void testBatch2(){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
//获取连接
con = DBManager.getConnection();
String sql="insert into testbatch values(?,?)";
st=con.prepareStatement(sql);
for(int i=1;i<100000000;i++){
st.setInt(1,i);
st.setString(2,"aa"+i);//已经形成一条完整 的sql语句(insert into testbatch value(3,'aa'))
st.addBatch();
if(i%1000==0){
st.executeBatch();
st.clearBatch();
}
}//st中有一个list
//防止当除1000留下的语句不被处理,最后在进行一次批处理
st.executeBatch();
st.clearBatch();
DBManager.release(con, st, rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}