gpt4 book ai didi

c# - 带有 using 子句的 SqlConnection - 在连接上调用关闭

转载 作者:行者123 更新时间:2023-11-30 14:14:49 26 4
gpt4 key购买 nike

当我在如下所示的 using 子句中有一个 SQLConnection 时,我是否需要显式关闭连接?

protected SqlConnection Connection 
{
get
{
if (this.connection == null)
{
this.connection = new SqlConnection(this.ConnectionString);
}
if (this.connection.State != ConnectionState.Open)
{
this.connection.Open();
}

return this.connection;
}
}

using (SqlConnection connection = this.Connection)
{
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "....";

using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
etc
}
}
}
}

最佳答案

不,你不知道。如果连接已经打开,连接的 Dispose() 方法将调用 Close。

您还应该按照 John Gathogo 的建议更改您的代码,以便在每次需要时创建一个新的连接对象。您的代码将按原样失败,因为您第二次尝试使用该连接时,它已经被处理掉了。

ADO.NET 使用连接池来保留打开的连接池,它提供给任何调用 Open 的人。这意味着只要池中有可用连接,创建和打开新连接就不会花费任何费用。保持连接打开的时间超过必要的时间会降低性能。

关于c# - 带有 using 子句的 SqlConnection - 在连接上调用关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135061/

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