数据库是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里面添加事务。
使用事务解决JDBC中批量插入数据库问题
本文介绍如何在使用JDBC进行批量插入数据库操作时,通过引入事务来解决可能遇到的问题,确保数据的一致性和完整性。具体实现包括配置数据库连接、设置事务隔离级别及执行SQL语句。
2452

被折叠的 条评论
为什么被折叠?



