JDBC批量运行executeBatch

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)

上一篇:UI:基础


下一篇:go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]