大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。
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)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117784.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...