C# 事务处理(Transcation)
数据库事务处理是以一个单一的逻辑单元完成一系列的操作,他可以由一系列的Sql语句组成,如果在该事务中包含的操作在执行的过程中没有发生错误,那么他对数据库所作的改变就是永久的,如果一旦有错误发生,它就不会对数据库作任何修改和改变。
事务必须是原子工作单位,对于其数据的修改,要么全部执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的,如果系统只执行这些操作中的一个子集,则会破坏事务的总体目标,事务具有ACID属性:
Atomic(原子性):事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全退回,全部不保留。
Consistent(一致性):事务完成或撤销后,都应该处于一致的状态。
Isolated(隔离性):多个事务同时进行,他们之间应该互补干扰,应该防止一个事务处理其他事务也要修改的数据时,不合理的存取数据和不完整的读取数据
Durable(永久性):事务提交以后,所作的工作就被永久的保存下来。
ADO.NET中的Transcation对象用于执行多个SQL语句组成的语句序列,并且除非全部语句执行成功,变动才会发生,否则回滚到事务执行前得状态。
public void ExecuteTranscation(String[] SqlStringList) //事务处理
{
this.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.Transaction = con.BeginTransaction(); //完成事务处理的前期准备工作
try
{
if (SqlStringList != null)
{
foreach (String SqlString in SqlStringList)
{
cmd.CommandText = SqlString;
cmd.ExecuteNonQuery();
}
cmd.Transaction.Commit();
}
}
catch (Exception)
{
cmd.Transaction.Rollback();
}
finally
{
this.Close();
this.Dispose();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架