关于jdbc的批处理(使用statement对象和preparedStatement对象)

使用statement对象进行批处理

1.获取connection对象

Connection  conn = JdbcUtils.getConnection();

2.获取statement对象

Statement st = conn.createStatement();

3.使用for循环一次插入多个sql语句

//插入2000条
			    for(int i = 1;i<=2000;i++) {
			    	String sql = "insert into student(id,name,age) values('"+i+"','张三',20)";
			    	//将sql语句添加到缓存中
			    	st.addBatch(sql);
			    	if(i%500 ==0) {
			    		//每500条发送一次数据
			    		st.executeBatch();
			    		//发送过后清空缓存中的数据
			    		st.clearBatch();
			    	}
			    }

4.提交数据

conn.commit();

使用statement对象的优缺点:
优点:可以向数据库一次性发送多条不同sql(或者是相同的sql语句,只是参数不同),大大的提升了效率
缺点:当一次发送不同的sql语句时,需要多次编写sql,对程序员来说是一种负担

使用Preparedstatement对象进行批处理

1.获取statement对象

 connection conn = JdbcUtils.getConnection();

2.编写sql语句

 String str = "insert into stu(id,name,age) values(?,?,?)";

3.对sql语句进行预编译

 PreparedStatemnt ps = conn.preparedStatement(sql);

4.使用for循环一次性插入多个占位符(数据)

   //插入2000条
    			    for(int i = 1;i<=2000;i++) {
    			    	ps.setInt(1,i);
    			    	     ps.setString(2,"张三");
    			    	     ps.setString(3,20);
    			    	//将sql语句添加到缓存中
    			    	ps.addBatch();
    			    	if(i%500 ==0) {
    			    		//每500条发送一次数据
    			    		ps.executeBatch();
    			    		//发送过后清空缓存中的数据
    			    		ps.clearBatch();
    			    	}
    			    }

5.提交数据

conn.commit();	

使用preparedstatement对象的优缺点:
优点:使用预编译,效率比statement效率更高
缺点:只能应用在sql语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。

两种操作的对比:
1.statement可以一次性插入不同的sql,也能应用在sql语句相同,参数不同的批处理当中,而perparedstatement只能应用在sql语句相同,但是参数不同的批处理当中。
2.在都应用在sql语句相同,而参数不用的情况下,预编译的处理比statement效率更高

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值