在这句话中:

myCommand.ExecuteReader(CommandBehavior.CloseConnection)

是否在异常的情况下关闭连接?

有帮助吗?

解决方案

有很多方法可以解决命令。

最终,数据阅读器的Close方法将关闭连接,前提是没有出错。

如果在ExecuteReader或其任何被调用的方法中发生异常,则在构造实际的DataReader对象之前,则不会,连接将不会关闭。

如果发生异常,我不相信它会关闭连接。

其他提示

做“正常”的最安全的方法查询是

using (var conn = new SqlConnection("..."))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "...";
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // ...
            }
        }
    }
}

可以在此代码之外捕获异常。

这取决于发生异常的地方!

如果您正确构建了try catch,那就没问题了。

例如:

SqlCommand myCommand = new SqlCommand();

try
{
   myCommand.dostuff();
}
catch(Exception ex)
{
  // display error message
}
finally
{
  myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}

如果行:myCommand.ExecuteReader(CommandBehavior.CloseConnection)失败(可能数据库已关闭?)则无法以编程方式关闭连接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top