0

这是一个非常简单的问题..我想根据下面的代码知道..是连接关闭然后执行返回庄园还是在不关闭连接的情况下执行返回庄园?..因为我设置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());
        }
4

2 回答 2

3

当关联的 DataReader 对象关闭时,关联的 Connection 对象也将关闭。

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

我会为两者添加usingSqlCommandReader

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());
    }
}
于 2013-10-23T06:39:57.863 回答
1

它将被关闭。隐式调用调用,Dispose并且因为您使用语句,所以保证将始终在块结束时调用。SqlConnectionCloseusingDispose

于 2013-10-23T06:38:22.980 回答