JDBC 数据库批处理操作

来源:互联网 发布:java驻场开发怎么样 编辑:程序博客网 时间:2024/05/16 07:10

由于建立数据库连接是一个很消耗资源和时间的操作,一般建立连接的要求尽可能晚建立,尽可能早释放。但是对于执行多条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();







原创粉丝点击