import tang.heima.util.JdbcUtil; /* * JDBC进行批处理方式有两种: * 第一个:使用statement进行批处理可以批处理(执行不同类型的sql语句) * 第二个:使用preparedStatement进行批处理执行的是(同一类型的sql语句) * */ public class BatchTest { /** * 可以执行的不同一类型的语句 */ @Test public void statementTestBatch() { Connection conn = null; Statement stat = null; try { //获得连接 conn=JdbcUtil.getConnection(); //Statement可以执行任意的sql语句 stat=conn.createStatement(); stat.addBatch("create database mydb3 character set utf8"); stat.addBatch("use mydb3"); stat.addBatch("create table giels(name varcahr(30),age int,city varchar(30) "); stat.addBatch("insert into girls values('zhangbozhi',40,'香港')"); stat.addBatch("insert into girls values('lingqinxia',26,'香港')"); stat.addBatch("insert into girls values('zongchuhong','43','北京')"); stat.addBatch("delete from girls where name='zhongbizhi'"); //执行批处理 stat.executeBatch(); } catch (SQLException e) { e.printStackTrace(); } finally{ JdbcUtil.release(conn, stat, null); } } /** * 执行的是同一类型的sql语句 */ @Test public void preparedStatementTestBatch() { Connection conn = null; PreparedStatement stat = null; try { //获得连接 conn = JdbcUtil.getConnection(); conn.prepareStatement("insert into users values(?,?,?,?)"); for (int i = 0; i < 100; i++) { stat.setInt(1,i); stat.setString(2, "name"+i); stat.setString(3, "password"+i); stat.setString(4, "nickname"+i); //添加封装 stat.addBatch(); //为了提高效率 if (i%50==0) { //执行批处理 stat.executeBatch(); //清空已经执行的批处理 stat.clearBatch(); } } } catch (Exception e) { e.printStackTrace(); } finally{ JdbcUtil.release(conn, stat, null); } } }