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)

时间: 2024-08-06 07:58:12

JDBC批处理executeBatch的相关文章

JDBC的PreparedStatement启动事务使用批处理executeBatch()

JDBC使用MySQL处理大数据的时候,自然而然的想到要使用批处理, 普通的执行过程是:每处理一条数据,就访问一次数据库: 而批处理是:累积到一定数量,再一次性提交到数据库,减少了与数据库的交互次数,所以效率会大大提高 至于事务:事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功,默认是关闭事务的. 更多事务的资料,请参考这里:http://blog.csdn.net/caomiao2006/article/details/22412755 1. PreparedSta

JDBC批处理Select语句

注:为了更好理解本文,请结合原文阅读 在上一篇文章中提到了PreparedStatement的局限性:PreparedStatement不允许一个占位符(?)设置多个值,本文试图从其它角度来解决该问题. 在网络上开销最昂贵的资源就是客户端与服务器往返的请求与响应,JDBC中类似的一种情况就是对数据库的调用,如果你在做数据插入.更新.删除操作,可以使用executeBatch()方法减少数据库调用次数,如: 1 2 3 4 5 Statement pstmt = conn.createStatem

Java JDBC批处理插入数据操作

在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及如何优化批量操作. 首先,使用Java JDBC基本的API批量插入数据到数据库中. Simple Batch - 简单批处理    我把它叫做简单批处理.要求很简单,执行批量插入列表,而不是为每个INSERT语句每次提交数据库,我们将使用JDBC批处理操作和优化性能. 想想一下下面的代码: Bad

Java基础系列13:JDBC批处理简介

关于JDBC的批处理,这是JDBC2.0以后兴起的概念.所谓批处理就是可以一次性执行多条SQL命令,比如:插入.删除等.如果想要实现批处理操作,则需要使用PreparedStatement的addBatch()方法将一条SQL语句添加到批处理中,接着使用executeBatch()方法来执行前面添加的全部命令.示例代码如下: package javase.jdbc; import java.sql.Connection; import java.sql.PreparedStatement; im

JDBC批处理数据

JDBC提供了数据库batch处理的能力,在数据大批量操作(新增.删除等)的情况下可以大幅度提升系统的性能. // 关闭自动执行 con.setAutoCommit(false); Statement stmt = con.createStatement(); 禁用了自动执行模式,从而在调用 Statement.executeBatch() 时可以防止 JDBC 执行事务处理.禁用自动执行使得应用程序能够在发生错误及批处理中的某些命令不能执行时决定是否执行事务处理.因此,当进行批处理更新时,通常

jdbc批处理

有的时候,我们需要一次性插入很多的数据或者一次性更新.删除很多的数据,那么为了提高效率,我们不妨使用JDBC的批处理来完成. 看下面的小例子. package testBatch; import java.sql.*; public class testBatch { public static void main(String[] args) throws SQLException { Connection con=null; Statement stmt=null; try { Class.

Jdbc批处理一点异同

同样的代码: public class TestBatch {   public static void main(String[] args) throws SQLException, ClassNotFoundException { //Class.forName("oracle.jdbc.driver.OracleDriver"); //Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@lo

spring jdbc 批处理插入主健重复的数据

1.有事务:当调用spring jdbc 的批处理的时候,在实现层加入事物,只要有插入异常的数据,整个批处理操作都会回滚.事务保证操作的原子性. 2.无事务:当没有事务的时候,批处理插入数据的时候,若主健重复则会直接抛出异常,后面没有主键冲突的依然不会插入,因为当抛出异常的时候,下一次插入操作就不会执行. 3.当想要插入的数据是增量的 有两种方法:第一种删除原来的数据,插入新的数据.第二种:插入数据主健重复的时候做更新操作 insert into   on dupulicate key upda

JDBC 批处理

主要是是 addBatch ,executeBatch ,clearBatch 三个方法. 官方示例代码: public void batchUpdate() throws SQLException { Statement stmt = null; try { this.con.setAutoCommit(false);//关闭commit stmt = this.con.createStatement();//创建statement stmt.addBatch( "INSERT INTO CO