当前位置: 首页 > news >正文

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


http://www.mrgr.cn/news/54581.html

相关文章:

  • 【Android_14】ACodec-OMX跨IPC的一些类
  • Yolo目标检测:实时性与准确性的完美结合
  • 目标检测数据集图片及标签同步裁剪
  • 数据库模式概述
  • LLMS-Stable diffusion 报错 index out of bounds
  • to_sql报错not all arguments converted during string formatting
  • 2024130读书笔记|《不确定的我》——我们奔走、挣扎抗拒着,又热切地期盼着
  • 车载软件架构---汽车电子软件 A-B分区
  • 提示词高级阶段学习day1
  • LLAMA2入门(二)-----Transformer基础知识
  • 基于SSM果蔬经营系统的设计
  • 函数指针和指针函数
  • 一套开源轻量级的新零售快消进销存管理系统,使用.Net7 + Angular4开发(附私活源码)
  • 腾讯云技术深度解析:构建高效云原生应用与数据安全管理
  • 爬虫+数据保存
  • Maven 的使用:在 IDEA 中配置 Maven 的超详细步骤
  • centOS部署Jenkins实现项目可持续自动化部署
  • LLM | Hugging Face | 如何利用几句代码实现强大的AI效果(pipeline)?
  • Java 方法引用详解
  • 以简单组合优化为例讨论计算复杂性
  • 网球循环赛日程表生成算法[循环右移迭代算法]
  • (44)MATLAB读取语音信号进行频谱分析
  • Codeforces Round 979 (Div. 2)
  • Spark 基础概念
  • Systemd: service传递进程参数
  • ip-geoaddress-generator 基于IP的真实地址生成器