毛毛的小窝 — 关注技术交流、让我们一起成长

导航

SqlTransaction 类

表示要在 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);
            }

        }

    }

}


posted on 2007-05-18 13:14  mjgforever  阅读(735)  评论(1编辑  收藏  举报