gpt4 book ai didi

c# - 如何使用实用程序类管理 SQL 连接?

转载 作者:太空狗 更新时间:2023-10-30 00:58:59 25 4
gpt4 key购买 nike

我们有一个 SQL 实用程序类,它采用存储过程的名称及其输入参数,并在数据表中返回结果。这背后的原因是为了让我们不必担心忘记关闭连接而发生连接泄漏。此外,我们还可以通过不必在数据访问层中重新创建数据适配器和数据读取器来减少代码。

我遇到的问题是我们正在填充一个数据表,以便我们可以遍历它来创建我们的对象,所以我们基本上像数据读取器一样使用它。我读过有关将返回数据读取器或数据适配器的类。但是这样做的问题是客户端必须打开和关闭连接,或者您必须在 Finalize 方法中关闭连接。看起来您不希望垃圾收集负责关闭您的数据库连接。

总而言之,我们希望有一个类,这样我们就可以通过不必为每个查询创建数据读取器来减少代码,这样我们就可以确保关闭数据库连接。

处理此问题的最佳方法是什么?

更新: 仍在考虑这个问题,但到目前为止,最佳实践似乎仍然是返回一个数据读取器,使用 CommandBehavior.CloseConnection,然后相信谁曾使用该类来调用 dr.关闭()?

最佳答案

您是否考虑过 Microsoft Enterprise Library

public List<User> GetUsers()
{
List<User> result = new List<User>();

Database db = new
Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase(this.connectionString);
DbCommand cmd = db.GetStoredProcCommand("GetUsers");

using (IDataReader rdr = db.ExecuteReader(cmd))
{
while (rdr.Read())
{
User user = new User();
FillUser(rdr, user);
result.Add(user);
}
}
return result;

}

关于c# - 如何使用实用程序类管理 SQL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602043/

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