在下面的代码中,
using (SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr.Read())
{
_emailTemplate.EmailContent = dr["EMAILCONTENT"].ToString();
_emailTemplate.From = dr["EMAILFROM"].ToString();
_emailTemplate.Subject = dr["EMAILSUBJECT"].ToString();
}
}
我理解CommandBehavior.CloseConnection将在datareader关闭时关闭连接对象。在上面的代码中,当我们使用SqlDataReader时,它会在处理之前关闭datareader吗?换句话说,如果我使用using语句,我需要手动关闭datareader吗?
答案 0 :(得分:1)
不,您无需手动关闭阅读器。在'using'块的末尾,.NET调用项目上的Dispose()方法,如果它支持IDispoable接口。 SQLDataReader确实支持这个并且在调用dispose方法时自行关闭。这意味着在using块中调用dispose,它会为你关闭dataReader。