SqlTransaction 类[通俗易懂]

发布时间:2025-12-09 13:38:24 浏览次数:3



表 示要在 SQL Server 数据库中处理的 Transact-SQL 事务。应用程序通过在 SqlConnection 对象上调用 BeginTransaction 来创建 SqlTransaction 对象。对 SqlTransaction 对象执行与该事务关联的所有后续操作(例如提交或中止该事务)。









注意




在提交或回滚 SqlTransaction 时,应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚,则 Commit 和 Rollback 都会生成 InvalidOperationException。









下 面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。









private static void ExecuteSqlTransaction(string connectionString)










{




using (SqlConnection connection = new SqlConnection(connectionString))










{




connection.Open();









SqlCommand command = connection.CreateCommand();




SqlTransaction transaction;









// Start a local transaction.




transaction = connection.BeginTransaction(“SampleTransaction”);









// Must assign both transaction object and connection




// to Command object for a pending local transaction




command.Connection = connection;




command.Transaction = transaction;









try










{




command.CommandText =




“Insert into Region (RegionID, RegionDescription) VALUES (100, ‘Description’)”;




command.ExecuteNonQuery();




command.CommandText =




“Insert into Region (RegionID, RegionDescription) VALUES (101, ‘Description’)”;




command.ExecuteNonQuery();









// Attempt to commit the transaction.




transaction.Commit();




Console.WriteLine(“Both records are written to database.”);




}




catch (Exception ex)










{




Console.WriteLine(“Commit Exception Type: {0}”, ex.GetType());




Console.WriteLine(” Message: {0}”, ex.Message);









// Attempt to roll back the transaction.




try










{




transaction.Rollback();




}




catch (Exception ex2)










{




// This catch block will handle any errors that may have occurred




// on the server that would cause the rollback to fail, such as




// a closed connection.




Console.WriteLine(“Rollback Exception Type: {0}”, ex2.GetType());




Console.WriteLine(” Message: {0}”, ex2.Message);




}




}




}




}
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477