Który z poniższych dwóch przykładów jest prawidłowy? (A co jest lepsze i powinno się używać)Czy powinienem używać SqlDataReader wewnątrz instrukcji "using"?
W MSDN Znalazłem to:
private static void ReadOrderData(string connectionString)
{
string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;"
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
// Call Close when done reading.
reader.Close();
}
}
Jednak patrząc inne strony niektórzy użytkownicy proponuję zrobić to w ten sposób:
private static void ReadOrderData(string connectionString)
{
string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand(queryString, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
// Call Read before accessing data.
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
}
}
}
}
Tak pytanie brzmi: czy mogę użyć instrukcji using
również w SqlCommand
aw SqlDataReader
lub są one automatycznie usuwane na końcu kodu bloku SqlConnection
using
.
Możliwy duplikat [Czy konieczne jest ręczne zamknięcie i pozbycie się SqlDataReader?] (Http://stackoverflow.com/questions/744051/is-it-necessary-to-manually-close-and-dispose-of- SqlDataReader) –
również związane: [? Czy oddanie „używając” oświadczenie wokół DataReader zamknąć] (http://stackoverflow.com/q/2157276/456814). –