gpt4 book ai didi

c# - SqlDataAdapter关闭连接方法

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

我的程序中有这样的代码,我相信它不会在数据被填充后关闭连接。

public static string ConnectionInfo = System.Configuration.ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
public static DataTable ExecuteQuery(string query, string table)
{
SqlConnection cnn = new SqlConnection(ConnectionInfo);
SqlDataAdapter Adp = new SqlDataAdapter(query, cnn);
DataSet Ds = new DataSet();
Adp.Fill(Ds, table);
return Ds.Tables[table];
}

这段代码有什么问题吗?

最佳答案

唯一的问题是您没有对 SqlConnectionDataAdapter 使用 using 语句。然而,DbDataAdapter.Fill隐含地打开和关闭连接。

public static DataTable ExecuteQuery(string query, string table)
{
using(SqlConnection cnn = new SqlConnection(ConnectionInfo))
using(SqlDataAdapter Adp = new SqlDataAdapter(query, cnn))
{
DataTable tbl = new DataTable();
Adp.Fill(tbl);
return tbl;
}
}

The connection object associated with the SELECT statement must be valid, but it does not need to be open. If the connection is closed before Fill is called, it is opened to retrieve data, then closed. If the connection is open before Fill is called, it remains open.

注意

  • 即使出现错误,using 语句也会隐式关闭连接
  • 我使用了 DataAdapter.Fill(DataTable) 因为无论如何你都在使用一个表

编辑:我刚刚注意到您正在使用表名参数。您也可以使用 DbDataAdapter.Fill(DataSet, String)反而。这不会改变任何东西。

关于c# - SqlDataAdapter关闭连接方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091528/

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