概述
JDBC执行SQL语句,有两个处理的接口,一个PreparedStatement,Statement,一般操作JDBC比较用得多的还是PreparedStatement
不过在执行批量,PreparedStatement有点不够Statement
ps = conn.prepareStatement(sql);
for(int i = 0;i<10;i++){
ps.setString(1,"1");
//PreparedStatement批处理方式一
ps.addBatch();
}
//PreparedStatement批处理方式二
ps.addBatch("静态SQL");
ps.executeBatch();
这个是正常执行的
可是把PreparedStatement放到里面就没效了,以下:
for(int i = 0;i<10;i++){
ps = conn.prepareStatement(sql);
ps.setString(1,"1");
ps.addBatch();
}
ps.executeBatch();
Statement适合循环赋值到sql,代码以下:
Statement st = conn.createStatement();
for(int i = 0;i<10;i++){
st.addBatch("静态sql..........");
}
st.executeBatch();
这个是正常执行所有的语句
总结:造成这样的原因是
Statement st = conn.createStatement();这里可以不放SQL语句
ps = conn.prepareStatement(sql);这个一定要放初始SQL语句
JDBC的批处理不能加入select语句,否则会抛异常:
java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate().
at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1007)
转载于:https://my.oschina.net/abcijkxyz/blog/721948
最后
以上就是虚心棒球为你收集整理的JDBC批量执行executeBatch的全部内容,希望文章能够帮你解决JDBC批量执行executeBatch所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复