代码如下:
public static void insertBatch() {
int count[];
int count1[];
Boolean isinsert = false;
Connection con = null;
PreparedStatement pst = null;
PreparedStatement pst1 = null;
try {
con = getCon();
con.setAutoCommit(false); // 需要用到事务,不能让他自动提交,需要手动提交
pst = con.prepareStatement(INSERT_SQL); // INSERT_SQL表示对一张表的插入记录
pst1 = con.prepareStatement(INSERT_SQL1); // INSERT_SQL表示对另一张表的插入记录
pst.setString(1, "name1");
pst.setInt(2, 26);
pst.setString(3, "job1");
pst.addBatch();
pst.setString(1, "name2");
pst.setInt(2, 12);
pst.setString(3, "job2");
pst.addBatch();
-------可以对pst进行更多的插入-----------
pst1.setString(1, "name--1");
pst1.setInt(2, 26);
pst1.setString(3, "job--1");
pst1.addBatch();
pst1.setString(1, "name--2");
pst1.setInt(2, 26);
pst1.setString(3, "job--2");
pst1.addBatch();
-------可以对pst1进行更多的插入-----------
count = pst.executeBatch();
count1 = pst1.executeBatch();
con.commit(); //提交事务,这个非常重要
for(int i : count){
if(i == 0) {
con.rollback(); // 回滚,非常重要
System.out.println("======出现异常,回滚=========");
}
}
for(int i : count1){
if(i == 0) {
con.rollback(); // 回滚,非常重要
System.out.println("==111====出现异常,回滚====111=====");
}
}
} catch (SQLException e) {
try {
con.rollback(); // 回滚,非常重要
} catch (SQLException e1) {
e1.printStackTrace();
}
System.out.println("------出现异常,回滚----------");
e.printStackTrace();
} finally {
cloCon(con,pst);
}
}
转自【
http://www.blogjava.net/yxhxj2006/archive/2012/07/17/383310.html】
分享到:
相关推荐
在实际应用中,"batchinsert"可能是一个包含示例代码的文件,展示了如何使用JDBC批量插入Blob字段的具体实现。通过研究和理解这些代码,你可以更好地掌握批量插入Blob数据的技巧,并根据自己的需求进行调整和优化。 ...
本文将详细讲解如何使用JDBC(Java Database Connectivity)来向一个名为“Students”的数据库表中插入数据,同时也会涉及Oracle数据库和Java的相关知识点。 首先,JDBC是Java语言与各种数据库交互的一套标准接口,...
传统的单条插入方式可能会导致大量的网络往返和数据库事务开销,而批量插入则通过一次提交多个SQL语句来减少这些开销。 首先,我们需要了解JDBC的批量操作接口。`java.sql.Statement`和`java.sql.PreparedStatement...
在批量插入场景下,JDBC提供了Statement对象的addBatch()和executeBatch()方法,可以将多条插入语句一次性提交,减少与数据库的交互次数,从而提高效率。 Mybatis是一个轻量级的持久层框架,它简化了JDBC的复杂性,...
批量更新的原理与批量插入类似,都是通过`PreparedStatement`的`addBatch()`方法将多个更新操作加入到一个批处理队列中,然后调用`executeBatch()`方法执行这些更新操作。这种方式可以显著减少网络往返次数,提高...
本文将重点介绍如何在JMeter中使用JDBC Request来执行多条SQL语句,包括查询与更新操作,并针对不同类型的SQL语句提供最佳实践。 #### 二、JDBC Request概述 JDBC Request是JMeter提供的一个用于执行数据库操作的...
JDBC是Java中的一个API,包含了多个接口和类,如`DriverManager`、`Connection`、`Statement`、`PreparedStatement`和`ResultSet`等。`DriverManager`负责管理数据库驱动,`Connection`代表了与数据库的连接,`...
Statement接口提供了`batchUpdate(String[] sql)`方法,允许我们直接传入一个包含多条SQL语句的数组,一次性执行所有插入。相比于PreparedStatement,Statement适用于静态SQL语句,即每条插入语句完全相同。在`...
传统的单条插入方式会在每次插入后都与数据库进行一次通信,而批量处理则是在多次插入操作后才与数据库通信一次,这样可以大大降低网络传输开销,提高整体性能。 其次,设置`connection.setAutoCommit(false)`是...
描述中的“小程序”可能是一个自包含的Java应用程序,它使用JDBC驱动程序连接到各个数据库,读取源数据库中的记录,并将这些记录插入到目标数据库中。这个过程通常涉及到以下步骤: 1. **连接数据库**:通过JDBC的...
在Java的JDBC(Java Database Connectivity)中,一对多查询是指一个表中的记录与另一个表中的多条记录之间存在关联关系。在这个例子中,我们看到的是"Grades"(年级)与"Students"(学生)之间的关系,一个年级可以...
PreparedStatement对象允许程序员将SQL语句作为模板,其中包含一个或多个占位符,这些占位符在运行时用实际值替换。这可以提高性能,因为数据库可以预先编译SQL语句,然后多次执行,而无需每次都解析它。此外,由于...
为了向 `DemoTable` 插入多条记录,我们连续执行了多个 `INSERT INTO` 语句。 查询数据库并获取结果集则需要用到 `executeQuery()` 方法,它会返回一个 `ResultSet` 对象。我们可以遍历 `ResultSet`,提取并展示...
批处理是指一次性提交多个SQL语句到数据库进行执行,而不是逐个发送和执行。在JDBC中,批处理主要通过Statement或PreparedStatement对象的addBatch()方法来实现,然后通过executeBatch()方法执行整个批处理队列。 ...
在分布式系统或数据仓库环境中,数据同步是确保多个数据库或数据源间信息一致性的关键过程。本文将深入探讨JDBC在数据同步中的应用、原理以及实现方法。 ### JDBC数据同步的重要性 在多数据库系统中,数据同步能够...
- 预编译语句特别适合于多次执行的SQL,因为它们只需要编译一次。 6. **存储过程的使用**: - 存储过程是数据库中预先定义并编译好的一组操作。在JDBC中,可以使用 `CallableStatement` 对象来调用存储过程。通过...
2. **改进的批处理**:批处理功能得到了优化,允许程序员更高效地执行多条SQL语句,提升了性能。 3. **Statement的getGeneratedKeys()方法**:返回由INSERT、UPDATE或DELETE语句生成的自动增长键,这对于获取新插入...
9. **事务管理**:在进行多条数据库操作时,可能涉及到事务的使用,确保数据的一致性和完整性。例如,当用户注册时,可能需要同时插入用户信息和权限信息,这些操作必须在同一个事务中完成,以保证数据的一致性。 ...
综上所述,通过JDBC连接程序实现数据库数据迁移是一个涉及多步骤的过程,包括连接数据库、编写查询、处理结果、批量插入、资源管理和错误处理。在实际操作中,应根据具体业务需求进行调整和优化,确保迁移的高效和...
`test_jdbc.java`可能包含一个名为`TestJdbc`的类,这个类通常会实现上述的JDBC连接步骤,并可能包含一些额外的功能,如插入、更新、删除数据,或者执行存储过程。测试类可能会包含以下方法: - `void ...