Java开发基础-JDBC-核心对象的使用—05

PreparedStatement的批量处理的使用:

对于大量相同操作的数据处理可以使用PreparedStatement。

下面通过简单实例演示如何使用

1.创建测试使用的数据库表 emp_cheri及序列emps_seq

create table emp_cheri (
  empno   number(8) primary key,
  ename   varchar(20),
  job     varchar(20),
  mgr     number(8),
  hiredate  date,
  sal     number(11,2),
  comm    number(11,2),
  deptno    number(8)
);

create sequence emps_seq;

2.编写测试程序

public class TestDay03 {
	
	/**
	 * 批量添加员工
	 * PreparedStatement的批量处理
	 */
	@Test
	public void test3(){
		Connection conn = null;
		try {
		  conn = DBUtil.getConnection();
		  conn.setAutoCommit(false);
		  
		  //批量发送数据的前提是他们的SQL一样
		  String sql = "insert into emp_cheri values ("
				       +"emps_seq.nextval,?,?,?,?,?,?,?)";
		  PreparedStatement ps = conn.prepareStatement(sql);
		  
		  for(int i=1;i<=108;i++){
			  ps.setString(1, "好汉"+i);
			  ps.setString(2, "打劫");
			  ps.setInt(3, 0);
			  ps.setDate(4, null);
			  ps.setDouble(5, 1000.0);
			  ps.setDouble(6, 8000.0);
			  ps.setInt(7, 3);
			  //将本条数据暂存到ps内
			  ps.addBatch();
			  //每隔n次批量发送一次数据
			  if(i%30==0){
				  ps.executeBatch();
				  //清除缓存的数据
				  ps.clearBatch();
			  }
		  }
		  
		   //对于余下的数据单独发送一次
	         ps.executeBatch();
			  
		 conn.commit();
		} catch (SQLException e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			
			e.printStackTrace();
			throw new RuntimeException("批量添加员工失败!");
		}finally{
			DBUtil.close(conn);
		}
	}
}

使用Junit方式运行程序后,查看数据库中数据变化,可以看到数据都已成功插入到对应数据表中

备注:这里有个疑问,观察上面的数据,你发现没有,序列中没有生成 1,留下一个疑问,大家分析下,后面会讲。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值