Close()后SqlConnection.ServerVersion异常

时间:2014-10-12 19:17:33

标签: c# asp.net .net

我打开SqlConnection

SqlConnection Conn = new SqlConnection(...);
Conn.Open();
...
Conn.Close();
Conn.Dispose();

//debugger breakpoint

当我在此断点处查看调试器时,Conn.ServerVersion会抛出一个Sql异常:

  

连接已关闭

当然,我应该关闭连接,但是这个例外只是忽略了吗?或者我应该以不同的方式做这件事,如果我想避免得到这个例外,除了保持开放之外我还需要做什么?

我的理解是我的代码中没有任何例外,但我可能错了。 (我是新人)

2 个答案:

答案 0 :(得分:7)

在您处理完连接对象后,请避免检查它。 ("医生,当我这样做时会很疼......""然后停止这样做!")最简单 - 也是最可靠 - 的方法是使用{而是{1}}声明:

using

然后using (var conn = new SqlConnection(...)) { conn.Open(); ... } 无论如何都会被处理掉。请注意,您不需要调用conn以及处置 - 并记下本地变量的更常规名称。

答案 1 :(得分:6)

你实际上没有问题。

正如您在问题中所注意到的,您无法从已关闭的连接中获取服务器版本。

当您在调试器中查看该属性时,您将获得异常。

只要您不尝试通过封闭连接在实际代码中访问它,您就完全没问题了。