自学内容网 自学内容网

C#中实现事务

C#中实现事务控制需要使用数据库事务,可以通过ADO.NET来实现。下面是一个示例代码,演示如何在C#中使用事务控制来确保数据库的一系列操作要么全部成功,要么全部回滚。

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Your Connection String"; // 替换成你的数据库连接字符串

        // 在事务中执行一系列数据库操作
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            SqlTransaction transaction = connection.BeginTransaction();

            try
            {
                // 执行一系列数据库操作
                InsertData(connection, transaction, "Table1", "Value1");
                UpdateData(connection, transaction, "Table2", "Value2");
                DeleteData(connection, transaction, "Table3");

                // 所有操作成功,提交事务
                transaction.Commit();
                Console.WriteLine("事务成功提交");
            }
            catch (Exception ex)
            {
                // 发生异常,回滚事务
                transaction.Rollback();
                Console.WriteLine("事务回滚:" + ex.Message);
            }
        }
    }

    static void InsertData(SqlConnection connection, SqlTransaction transaction, string tableName, string value)
    {
        SqlCommand command = connection.CreateCommand();
        command.Transaction = transaction;
        command.CommandText = $"INSERT INTO {tableName} (Column1) VALUES (@value)";
        command.Parameters.AddWithValue("@value", value);
        command.ExecuteNonQuery();
    }

    static void UpdateData(SqlConnection connection, SqlTransaction transaction, string tableName, string value)
    {
        SqlCommand command = connection.CreateCommand();
        command.Transaction = transaction;
        command.CommandText = $"UPDATE {tableName} SET Column1 = @value";
        command.Parameters.AddWithValue("@value", value);
        command.ExecuteNonQuery();
    }

    static void DeleteData(SqlConnection connection, SqlTransaction transaction, string tableName)
    {
        SqlCommand command = connection.CreateCommand();
        command.Transaction = transaction;
        command.CommandText = $"DELETE FROM {tableName}";
        command.ExecuteNonQuery();
    }
}

以上代码中,首先创建一个数据库连接,然后开启一个事务。在事务中执行一系列数据库操作,例如插入数据、更新数据和删除数据等。如果发生任何异常,事务会被回滚,所有操作都会被撤销。如果所有操作都成功执行,事务会被提交,将对数据库的更改永久保存。

请注意,以上代码使用的是SQL Server数据库,你需要将connectionString变量替换为你自己的数据库连接字符串,并根据需要更改SQL语句和参数。


原文地址:https://blog.csdn.net/qq_34207898/article/details/143092024

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!