ध्यान दें कि SqlDataReader का निपटान SqlCommand.ExecuteReader () का उपयोग करके तत्काल किया गया है जो अंतर्निहित कनेक्शन को बंद / बंद नहीं करेगा ।
दो सामान्य पैटर्न हैं। पहले में, पाठक को कनेक्शन के दायरे में खोला और बंद किया जाता है:
using(SqlConnection connection = ...)
{
connection.Open();
...
using(SqlCommand command = ...)
{
using(SqlDataReader reader = command.ExecuteReader())
{
... do your stuff ...
}
}
}
कभी-कभी डेटा एक्सेस पद्धति का कनेक्शन खोलना और रीडर को वापस करना सुविधाजनक होता है। इस मामले में यह महत्वपूर्ण है कि लौटा हुआ रीडर CommandBehavior.CloseConnection का उपयोग करके खोला जाता है, ताकि पाठक को बंद करना / निपटाना अंतर्निहित कनेक्शन को बंद कर दे। पैटर्न कुछ इस तरह दिखता है:
public SqlDataReader ExecuteReader(string commandText)
{
SqlConnection connection = new SqlConnection(...);
try
{
connection.Open();
using(SqlCommand command = new SqlCommand(commandText, connection))
{
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
}
catch
{
connection.Close();
throw;
}
}
और कॉलिंग कोड को पाठक को निपटाने की जरूरत है:
using(SqlDataReader reader = ExecuteReader(...))
{
... do your stuff ...
}