jdbc之批处理
当需要向数据库发送一批sql指令时,应该避免一条一条的向数据库发送命令,而应该采用jdbc的批处理机制,以提升效率。
jdbc提供两种批处理机制:
第一种:
statement.addbatch(sql);,这个方法返回一个list集合,执行批处理指令———executeBatch(),之后调用clearBatch(),清理批。
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);
}
采用这种方法的缺点是:没有预编译sql语句,还有就是,当要向数据库发送多条命令相同而参数不同的sql指令是,需要重复写很多次sql指令,过于繁琐。
第二种:
PreparedStatement.addBatch(),优点:发送的是预编译后的SQL语句,执行效率高。缺点: 只能应用在SQL语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。
还没有评论,来说两句吧...