gpt4 book ai didi

c# - SQL 连接和事务

转载 作者:行者123 更新时间:2023-11-30 22:35:58 25 4
gpt4 key购买 nike

您是否必须在事务期间保持(相同的)SQL 连接打开,并且您是否必须在调用 BeginTransaction 的同一连接上调用 CommitTransaction 和 RollbackTransaction。

我们有一个数据库助手类,其中包含开始提交和回滚事务的方法,以及通常的选择、执行存储过程等。

辅助类看起来大致像这样:

public class DatabaseHelper
{
public void BeginTransaction()
{
// open connection, but dont close it.
}

public void CommitTransaction()
{
// close the connection
}

public void RollbackTransaction()
{
// close the connection
}

因此,我们不能像往常一样(我更愿意这样做):

using (sqlCon = new SqlConnection(connectionString))
{
// sql operations here
}

只要存在现有事务,助手类当前就会使连接保持打开状态,并在提交或回滚期间将其关闭。然而,这让我想知道这是否真的是最好的方法?连接是否必须在交易期间保持打开状态?

最佳答案

是的,它必须保持开放。您可以处理您的类的 OnDispose 并处理其中的连接。

public class DatabaseHelper : IDisposable
{
public void Dispose()
{
//close/dispose connection here
}
}

那么你可以做...

using(DatabaseHelper db = new DatabaseHelper())
{
}

关于c# - SQL 连接和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7204989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com