在 C# WinForms 开发中,数据库事务处理是确保数据一致性和完整性的核心技术。以下从原理到实践的深度解析:
一、事务核心原理
-
ACID 特性
- 原子性(Atomicity):事务内操作要么全部成功,要么全部回滚
- 一致性(Consistency):事务执行前后数据库保持合法状态
- 隔离性(Isolation):并发事务相互隔离(通过隔离级别控制)
- 持久性(Durability):提交后数据永久存储
-
WinForms 特殊考量
- UI 线程与数据库操作的交互
- 长事务导致的界面卡顿问题
- 事务超时与用户提示的平衡
二、SqlTransaction 实战
csharp
复制
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlTransaction transaction = conn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
using (SqlCommand cmd1 = new SqlCommand("UPDATE Accounts SET Balance -= 100 WHERE Id=1", conn, transaction))
{
cmd1.ExecuteNonQuery();
}
using (SqlCommand cmd2 = new SqlCommand("UPDATE Accounts SET Balance += 100 WHERE Id=2", conn, transaction))
{
cmd2.ExecuteNonQuery();
}
transaction.Commit();
MessageBox.Show("转账成功");
}
catch (SqlException ex)
{
transaction.Rollback();
Log.Error($"事务失败:{ex.Messa