返回具有关闭连接命令行为、执行顺序的执行读取器结果

本文关键字:执行 顺序 读取 结果 命令行 连接 返回 | 更新日期: 2023-09-27 18:36:33

这是一个非常简单的问题。我想根据下面的代码知道。是连接关闭,然后执行返回对账单,还是在不关闭连接的情况下执行返回电子对账单?..因为我设置了关闭连接CommandBehavior,但我认为连接根本不会关闭。.我说的对吗?

using (var con = new SqlConnection(_constr))
        {
            con.Open();
            var cmd = new SqlCommand(cmdstr, con);
            var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            if (reader.Read())
                return Convert.ToInt32(reader["persianDate"].ToString());
        }

返回具有关闭连接命令行为、执行顺序的执行读取器结果

当关联的连接对象关闭时 数据读取器对象已关闭。

由于您没有在返回之前关闭数据读取器,因此使用CommandBehavior.CloseConnection没有影响,但您的using块将关闭连接。

我也会为SqlCommandReader添加using

using (var con = new SqlConnection(_constr))
using (var cmd = new SqlCommand(cmdstr, con))
{
    con.Open();
    using (var reader = cmd.ExecuteReader())
    {
        if (reader.Read())
            return Convert.ToInt32(reader["persianDate"].ToString());
    }
}

它将被关闭。在SqlConnection调用上调用Dispose Close隐式的,并且由于您使用using语句,因此可以保证Dispose将始终在块结束时调用。