使用JDBC进行批处理

当我们需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率

有两种方式实现批处理:

1.使用statement

Statement.addBatch(sql)方法:添加sql语句 
executeBatch()方法:执行批处理命令   
clearBatch()方法:清除批处理命令

优点:可以向数据库发送多条不同的SQL语句。
缺点:
SQL语句没有预编译。
当向数据库发送多条语句相同,但仅参数不同的SQL语句时,需重复写上很多条SQL语句,如:
Insert into student(id,name) values(1,’aa’);
Insert into student(id,name) values(2,’bb’);
Insert into student(id,name) values(3,’cc’);

2.使用PreparedStatement
PreparedStatement.addBatch()
例:

conn = JdbcUtil.getConnection();
String sql = "insert into student(id,name) values(?,?)";
st = conn.prepareStatement(sql);
for(int i=0;i<100;i++){
    st.setString(1,  i);
    st.setString(2, "aa" + i);
    st.addBatch();
    if(i%10==0){
        st.executeBatch();
        st.clearBatch();
    }
}
st.executeBatch();

优点:发送的是预编译后的SQL语句,执行效率高。
缺点:只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。

另外,PrepareStatement在应用时相比于Statement也有很多优点:

  1. PreperedStatement可以避免SQL注入的问题。
  2. Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。
    PreparedStatement可对SQL进行预编译,从而提高数据库的执行效率。
  3. 并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值