2010-04-08 31 views
0

在下面的代碼,查詢中的DataReader

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?

回答

1

不,您不需要手動關閉閱讀器。在「使用」塊的末尾,如果.NET支持IDispoable接口,則.NET會在該項上調用Dispose()方法。 SQLDataReader確實支持這一點,並通過調用dispose方法關閉自己。這意味着在使用塊處,調用dispose來關閉dataReader。