8

我知道存在很多示例,其中定义了 SqlConnection,然后定义了 SqlCommand,两者都在 Using 块中:

using (var conn = new SqlConnection(connString)) {
      using (var cmd = new SqlCommand()) {
        cmd.Connection = conn;
        //open the connection
      }
}

我的问题:如果我直接在 SqlCommand 上定义连接,那么在释放命令时连接会关闭吗?

using (var cmd = new SqlCommand()) {
      cmd.Connection = new SqlConnection(connString);
      //open the connection
}
4

4 回答 4

11

不,SqlCommand 从不尝试关闭/处理连接。

于 2009-01-04T01:26:46.193 回答
5

不,连接对象在您明确处置之前不会被处置。但我的建议是尽可能使用using 块

于 2009-01-04T01:29:28.793 回答
5

它不会关闭连接,您需要自己关闭它或将其放入自己的 using 语句中。

这里还有一个提示,可以让你的using块更具可读性:

using (var conn = new SqlConnection(connString))
using (var cmd = new SqlCommand())
{
    cmd.Connection = conn;
}
于 2009-01-04T01:33:05.933 回答
-2

@milot

但我的建议是尽可能使用 using 块。

在使用非 IDisposable 对象时使用 Using Blocks 很好,但无用,因此如果您在任何地方使用 Using Blocks,这可能会造成混淆。

请小心,因为如果您的对象不实现 IDisposable,它们可能不会被处置。

希望这可以帮助。

于 2009-01-04T01:59:09.857 回答