ADO.NET事务拾遗
代码段1:
using (SqlConnection conn1 = new SqlConnection(connString)){ if (conn1.State == ConnectionState.Closed) conn1.Open(); SqlTransaction trans = conn1.BeginTransaction(IsolationLevel.ReadUncommitted); try { SqlCommand cmd1 = new SqlCommand(); cmd1.Connection = conn1; cmd1.CommandText = insertString1;//插入语句1 cmd1.Transaction = trans; cmd1.ExecuteNonQuery(); cmd1.CommandText = insertString2;//插入语句2 cmd1.Transaction = trans; cmd1.ExecuteNonQuery(); SqlCommand cmd2 = new SqlCommand(selectString, conn1);//查询语句 SqlDataAdapter sda = new SqlDataAdapter(cmd2); DataSet ds =new DataSet(); sda.Fill(ds); trans.Commit(); } catch(SqlException ex){ trans.Rollback(); Console.WriteLine(ex.Message); }}
using (SqlConnection conn1 = new SqlConnection(connString)){ if (conn1.State == ConnectionState.Closed) conn1.Open(); SqlTransaction trans = conn1.BeginTransaction(IsolationLevel.ReadUncommitted); try { SqlCommand cmd1 = new SqlCommand(); cmd1.Connection = conn1; cmd1.CommandText = insertString1;//插入语句1 cmd1.Transaction = trans; cmd1.ExecuteNonQuery(); cmd1.CommandText = insertString2;//插入语句2 cmd1.Transaction = trans; cmd1.ExecuteNonQuery(); //下面使cmd2使用新的连接conn2 using (SqlConnection conn2 = new SqlConnection(connString)) { SqlCommand cmd2 = new SqlCommand(selectString, conn2); SqlDataAdapter sda = new SqlDataAdapter(cmd2); DataSet ds = new DataSet(); sda.Fill(ds); } trans.Commit(); } catch(SqlException ex){ trans.Rollback(); Console.WriteLine(ex.Message); }}
select request_session_id, resource_type, resource_database_id, resource_description , resource_associated_entity_id, request_mode, request_status from sys.dm_tran_locks