1 string connstr = "";
2 using (SqlConnection conn = new SqlConnection(connstr))
3 {
4 conn.Open();
5 using (SqlTransaction tx = conn.BeginTransaction())
6 {
7 try
8 {
9 //using是保证资源一定会被回收的,离开using范围后自动调用Dispose方法(无论是否有异常)
10
11 //using==try...finally...
12
13 //using不会进行异常的catch
14
15 using (SqlCommand cmd1 = conn.CreateCommand())
16
17 using (SqlCommand cmd2 = conn.CreateCommand())
18 {
19 cmd1.Transaction = tx;//在SQLServer中必须把BeginTransaction返回的对象赋值给SqlCommand的
20 //Transaction属性。MySql也推荐折磨写不写也可以。
21 cmd1.CommandText = "insert into T_Persons(Name,Age) values('a',1)";
22 cmd1.ExecuteNonQuery();
23 cmd2.Transaction = tx;
24 cmd2.CommandText = "insert into T_Persons(Name,Age) values('b',2)";
25 cmd2.ExecuteNonQuery();
26 }
27
28 tx.Commit();
29 }
30 catch (Exception ex)
31 {
32 tx.Rollback();
33 }
34 }
35 }