JDBC 数据库批处理操作

由于建立数据库连接是一个很消耗资源和时间的操作,一般建立连接的要求尽可能晚建立,尽可能早释放。但是对于执行多条sql语句时,要是频繁第建立连接释放连接,效率会很低。因此可能通过JDBC的批处理来优化此操作。即建立一次连接,执行多条sql语句。

主要用到的方法:

PreparedStatement.addBatch(); //增加一条sql语句,sql语句必须一致,发送的sql语句经过了预编译,执行效率高,只能应用在sql语句相同,参数不同的场景
Statement.addBatch(String sql); //增加一条sql语句,有点:可以向批处理中增加多条不同的sql的语句;缺点:sql语句没有预编译,因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据
PreparedStatement.executeBatch();//将所有sql语句一起执行
clearBatch();清除批处理命令

//Demo1,使用Statement.addBatch()来进行批处理

Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
String sql1 = "insert into user(name,password,email,birthday) 
	values('kkk','123','abc@sina.com','1978-08-08')";
String sql2 = "update user set password='123456' where id=3";
st = conn.createStatement();
st.addBatch(sql1);  //把SQL语句加入到批命令中
st.addBatch(sql2);  //把SQL语句加入到批命令中
st.executeBatch();
} finally{
	JdbcUtil.free(conn, st, rs);
}

//Demo2, 使用 PreparedStatement.addBatch()

conn = JdbcUtil.getConnection();
String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)";
st = conn.prepareStatement(sql);
for(int i=0;i<50000;i++){
st.setString(1, "aaa" + i);
st.setString(2, "123" + i);
st.setString(3, "aaa" + i + "@sina.com");
st.setDate(4,new Date(1980, 10, 10));

st.addBatch();
if(i%1000==0){
st.executeBatch();
st.clearBatch();
}
}
st.executeBatch();







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值