繁体   English   中英

“connection.Close()”是关闭SQL连接的最佳或最安全的方法吗?

[英]Is “connection.Close()” the best or safest way to close an SQL connection?

我一直在用

connection.Close();

但这是我在.NET中的第一个项目,我不确定我是否正确关闭它。

我不希望我的网站在真正托管之后立即死亡。

通常我会这样做:

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());

    SqlCommand cmd = new SqlCommand();

    cmd.Connection = conn;

    // <some code>

    conn.Open();
    / <some code>
    conn.Close();

您应该将连接放在using语句中;

using(var connection = new SqlConnection)
{
  connection.Open();
  ...other code using it here.
}

using语句确保在完成SqlConnection后处理它。 在您的方案中(取决于您放置close方法的位置),如果异常关闭,它将永远不会到达Close()方法,并且连接将保持打开状态。

更好的是,因为你正在建立一个网站。 Request对象(应该可用)上应该有一个名为RegisterForDispose的方法。 这将在请求结束时自动处理连接(关闭它)。 你可以像这样使用它:

var connection = new SqlConnection();
Request.RegisterForDispose(connection);

两者最终完成相同的事情,但第二个允许更多的灵活性。

做Kevin所说的并将你的.Open()调用放在using块中:

using(var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()))
{
    var cmd = new SqlCommand("my sql command here", conn);

    conn.Open();

    cmd.(whatever method you are using)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM