JDBC里面如何运用事务实现执行多条SQL语句

数据库是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里面添加事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值