JDBC批处理executeBatch

2022-07-18 15:44:08 浏览数 (1)

大家好,又见面了,我是全栈君

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://javaforall.cn/117784.html原文链接:https://javaforall.cn

0 人点赞