数据库是SQL SERVER 2005
编译环境是Eclipse
我要用bulk insert往数据库表里面插数据,可能会插入多张表,所以我在程序里面是将这些插入写在一个sql语句里面一起执行,如下:
BULK Insert [db].[dbo].[table1]
From "D:\cnas\csvsms\file\1\***.csv"
WITH (
FIRSTROW = 4,
FORMATFILE ='d:/***.fmt')
BULK Insert [db].[dbo].[table2]
From "D:\cnas\csvsms\file\1\****.csv"
WITH (
FIRSTROW = 4,
FORMATFILE ='d:/****.fmt')
最开始执行的时候插入第二个的时候会报错,但是报错之后前面插得数据也成功插入了,这样很明显是不行的,所以我想到了事务,于是解决方案如下:
执行的时候加入如下代码:
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
url = GlobalsConfig.getDBUrl();
user = GlobalsConfig.getDBUser();
password = GlobalsConfig.getDBPwd();
PreparedStatement ps = null;
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
ps = conn.prepareStatement(cmd);
ps.executeUpdate();
conn.commit();
} catch (SQLException e) {
try {
conn.rollback();
} catch (Exception ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
把sql传入,执行,就OK了,成功在JDBC里面添加事务。
分享到:
相关推荐
本文将重点介绍如何在JMeter中使用JDBC Request来执行多条SQL语句,包括查询与更新操作,并针对不同类型的SQL语句提供最佳实践。 #### 二、JDBC Request概述 JDBC Request是JMeter提供的一个用于执行数据库操作的...
本文将详细解释如何使用JdbcTemplate来执行多条SQL语句,以及其在事务管理中的作用。 首先,JdbcTemplate的`batchUpdate`方法是用于批量执行SQL语句的,如示例所示。在上述代码中,`batchUpdate`接收一个SQL语句的...
批量执行SQL的基本思想是通过一次网络往返,发送多条SQL语句到数据库服务器,从而减少网络开销,提高执行效率。在Java中,主要通过`PreparedStatement`的`addBatch()`方法将多条SQL语句添加到批处理中,再调用`...
5. **批处理**:使用`BatchUpdateException`批量执行多条SQL语句,提高效率。 6. **游标**:通过设置不同的游标类型,控制数据的读取方式,如只进、可滚动等。 7. **元数据查询**:获取数据库、表、列等的元数据信息...
在JavaWeb开发中,SQL语句常用于后端与数据库交互,例如通过JDBC(Java Database Connectivity)来执行SQL查询。开发者需要熟悉SQL,以便有效地与数据库进行通信,存储和检索数据,从而实现Web应用程序的功能。在...
当在一个事务中执行多条SQL语句时,如果其中一个失败,所有操作都将回滚,确保数据的一致性。你可以通过`JdbcTemplate`的`execute`方法执行一组SQL操作,并在需要时捕获并处理异常。 5. **性能优化**:通过日志,...
在Java Web开发中,JSP(JavaServer Pages)经常用于创建动态网页,而SQL(Structured Query ...总的来说,理解和掌握JSP中的多条SQL语句执行以及事务管理,对于构建健壮、高效且数据一致性的Web应用具有重要意义。
9. 性能优化:使用批处理(`addBatch()`和`executeBatch()`)来发送多条SQL语句,可以提高性能。另外,考虑使用连接池(如C3P0、HikariCP)管理数据库连接,减少连接创建和销毁的开销。 10. 错误处理:处理JDBC异常...
5. **批处理**:对于多条相似的SQL语句,可以使用批处理功能提高执行效率。 6. **游标支持**:可以使用游标在结果集中前后移动,方便处理大量数据。 7. **数据库元数据**:通过`DatabaseMetaData`接口获取数据库的...
- 使用批处理(`addBatch()`和`executeBatch()`)来发送多条SQL语句,可以减少网络通信开销。 - 设置合适的连接池,如C3P0或HikariCP,可以有效管理数据库连接,提高性能。 - 使用`PreparedStatement`而不是`...
当需要执行多条相似的SQL语句时,可以使用`addBatch()`和`executeBatch()`方法实现批处理,提高效率。 8. **预编译的PreparedStatement优点**: - 性能优化:SQL语句预编译后,数据库只需解析一次。 - 安全性:...
- `void testTransaction()`: 演示如何在事务中执行多条SQL语句。 4. **JDBC最佳实践** - 使用连接池:为了提高性能和资源利用率,应该使用连接池,如C3P0、HikariCP或Apache DBCP。 - 预编译SQL:使用`...
1. **批处理**:可以一次性发送多条SQL语句,提高数据处理效率。 2. **游标**:允许开发者按需读取结果集,而不是一次性加载所有数据,节省内存资源。 3. **XML支持**:可以直接在SQL Server中处理XML类型的数据。 4...
-批处理:使用PreparedStatement的`addBatch()`和`executeBatch()`方法,可以批量执行多条SQL语句,提高效率。 - 数据源管理:在企业级应用中,通常使用DataSource接口管理数据库连接,以实现连接池的功能,提高...
7. **批处理**:JDBC提供批处理功能,可以一次性发送多条SQL语句,提高效率。 8. **结果集处理**:通过ResultSet对象获取查询结果,可以迭代遍历记录,也可以通过`next()`方法逐行读取。 9. **异常处理**:使用`...
6. **批处理**:通过`Statement`的`addBatch()`和`executeBatch()`方法,可以批量执行多条SQL语句,提高效率。 7. **连接池**:在实际应用中,通常会使用连接池(如C3P0、HikariCP或Apache DBCP)来管理和复用...
6. **批处理**:使用PreparedStatement的`addBatch()`方法添加多条SQL语句到批处理队列,然后通过`executeBatch()`一次性执行,提高批量操作的效率。 7. **连接池**:为了提高性能和资源利用率,通常会在应用服务器...
7. **性能优化**:可能包含批处理(Batch Processing)功能,允许一次性执行多条SQL语句,提升效率。 在实际项目中,开发者只需关注SQL语句本身,无需关心数据库连接的创建和关闭,这极大地提高了开发效率。例如,...
6. **批处理**:使用PreparedStatement的`addBatch()`方法添加多条SQL语句到批处理队列,然后通过`executeBatch()`一次性执行,提高效率。 7. **连接池**:在实际应用中,通常会配合连接池技术,如Apache的DBCP或C3...