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语句和参数。