gpt4 book ai didi

c# - 处理 SQL 命令并关闭连接

转载 作者:可可西里 更新时间:2023-11-01 08:44:28 25 4
gpt4 key购买 nike

直到现在我总是使用类似的结构从数据库中获取数据并填充数据表

public static DataTable GetByID(int testID)
{
DataTable table = new DataTable();
string query = @"SELECT * FROM tbl_Test AS T WHERE T.testID = @testID";

using (SqlConnection cn = new SqlConnection(Configuration.DefaultConnectionString))
{
SqlCommand cmd = new SqlCommand(query, cn);
cmd.Parameters.Add("@testID", SqlDbType.Int).Value = testID;

cn.Open();
table.Load(cmd.ExecuteReader());
}

return table;
}

现在我在构建分析中看到了一些警告:

TestService.cs (37):CA2000:Microsoft.Reliability:在方法“TestService.GetByID(int)”中,对象“表”未沿所有异常路径放置。在对对象“表”的所有引用超出范围之前调用 System.IDisposable.Dispose。

TestService.cs (42):CA2000:Microsoft.Reliability:在方法“TestService.GetByID(int)”中,在对对象“cmd”的所有引用超出范围之前调用 System.IDisposable.Dispose。

我应该更改我的代码吗

    public static DataTable GetByID(int testID)
{
DataTable table = new DataTable();
string query = @"SELECT * FROM tbl_Test AS T WHERE T.testID = @testID";

using (SqlConnection cn = new SqlConnection(Configuration.DefaultConnectionString))
{
using (SqlCommand cmd = new SqlCommand(query, cn))
{
cmd.Parameters.Add("@testID", SqlDbType.Int).Value = testID;

cn.Open();
table.Load(cmd.ExecuteReader());
}
}

return table;
}

如何处理 DataTable 对象?将 SqlCommand 放在 using 中是一个好习惯吗?

谢谢

干杯

最佳答案

你也应该这样做:

using (SqlDataReader reader =
cmd.ExecuteReader
(CommandBehavior.CloseConnection))
{
table.Load(reader);
}

加载表格时

关于c# - 处理 SQL 命令并关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8475962/

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