使用C#通过IDbConnection和IDbTransaction实现数据库本地事务,以SqlConnection为例,先打开连接,调用BeginTransaction()开启事务,将事务对象传给SqlCommand执行操作,若全部成功则Commit提交,否则Rollback回滚;需确保命令关联事务、连接保持打开、妥善处理异常并及时释放资源;SQLite等其他数据库同理,仅类名不同。

在C#中使用数据库本地事务,可以通过 ADO.NET 提供的 IDbConnection、IDbTransaction 接口来实现。以 SQL Server 为例,使用 SqlConnection 开启事务,通过 SqlTransaction 控制提交或回滚。
使用步骤说明
开启事务的基本流程如下:
创建数据库连接(SqlConnection)调用 BeginTransaction() 方法启动事务将事务对象传给 SqlCommand 使用执行一个或多个数据库操作如果全部成功,调用 Commit() 提交事务如果有异常,调用 Rollback() 回滚事务
示例代码:SQL Server 本地事务
using System;using System.Data.SqlClient;class Program{static void Main(){string connectionString = "Server=localhost;Database=TestDB;Integrated Security=true;";
using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // 开始事务 SqlTransaction transaction = connection.BeginTransaction(); try { // 第一条命令:更新账户A余额 SqlCommand cmd1 = new SqlCommand("UPDATE Accounts SET Balance = Balance - 100 WHERE Id = 1", connection, transaction); cmd1.ExecuteNonQuery(); // 第二条命令:更新账户B余额 SqlCommand cmd2 = new SqlCommand("UPDATE Accounts SET Balance = Balance + 100 WHERE Id = 2", connection, transaction); cmd2.ExecuteNonQuery(); // 所有操作成功,提交事务 transaction.Commit(); Console.WriteLine("事务提交成功,转账完成。"); } catch (Exception ex) { // 出现异常,回滚事务 try { transaction.Rollback(); } catch (Exception rollBackEx) { Console.WriteLine("事务回滚失败: " + rollBackEx.Message); } Console.WriteLine("事务执行失败: " + ex.Message); } }}
}
关键点说明
以下是在使用本地事务时需要注意的地方:
SqlCommand 必须指定事务:每个参与事务的命令都要传入 transaction 对象,否则不会被包含在事务中连接必须保持打开状态:事务期间数据库连接不能关闭异常处理必不可少:确保出错时能正确回滚,避免数据不一致及时释放资源:使用 using 或 try-finally 确保连接和事务被正确释放
其他数据库(如 SQLite)的类似用法
如果是 SQLite,原理相同,只是类名不同:
using (var connection = new SqliteConnection(connectionString)){ connection.Open(); var transaction = connection.BeginTransaction();try{ using var cmd = new SqliteCommand("INSERT INTO Logs (Message) VALUES (@msg)", connection, transaction); cmd.Parameters.AddWithValue("@msg", "测试日志"); cmd.ExecuteNonQuery(); transaction.Commit();}catch{ transaction.Rollback(); throw;}
}
基本上就这些。本地事务适用于单一数据库内的操作,简单直接,是保证数据一致性的常用手段。
以上就是C#中如何使用数据库的本地事务?示例代码是什么?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441072.html
微信扫一扫
支付宝扫一扫