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 }