使用close连接命令行为,执行顺序返回executereader结果

时间:2013-10-23 06:33:46

标签: c# return connection-close command-behaviors

这是一个非常简单的问题..我想知道基于下面的代码..是否关闭连接然后返回庄园将被执行或返回庄园将执行而不关闭连接?..因为我设置了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());
        }

2 个答案:

答案 0 :(得分:3)

  

关联时关联的Connection对象关闭   DataReader对象已关闭。

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

我会同时为usingSqlCommand添加Reader

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());
    }
}

答案 1 :(得分:1)

它将被关闭。在Dispose上调用SqlConnection隐式调用Close,因为您使用using语句,保证在块结束时始终调用Dispose