Если я создаю экземпляр SqlDataReader внутри блока using
, мне нужно позвонить close()
на читателя?Если SqlDataReader будет удален, мне нужно вызвать функцию close()?
Простой пример поиска пользователя, показанного ниже.
using (var connection = new SqlConnection(Settings.GetValue("SqlConnection")))
{
SqlCommand command = new SqlCommand("select * from Users where Id = @Id", connection);
command.Parameters.Add("@Id", SqlDbType.UniqueIdentifier);
command.Parameters["@Id"].Value = id;
using (SqlDataReader reader = command.ExecuteReaderWithRetry())
{
reader.Read();
if (reader.HasRows)
{
//Do work
}
//Is this neccesary?
reader.Close();
}
}
Вы найдете ответы на похожие топы на SO. – JeffO
Сторона примечания: 'SqlCommand' также реализует' IDisposable'. – JosephHirn
@JeffO Dang it, я думал, что SO скажет мне, что этот вопрос не принадлежит. – Justin