Welches der folgenden zwei Beispiele ist richtig? (Oder was ist besser und sollte ich)Sollte ich SqlDataReader innerhalb einer "using" -Anweisung verwenden?
In der MSDN ich dies gefunden:
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();
}
}
Allerdings suchen anderen Seiten einige Benutzer vorschlagen, es auf diese Weise zu tun:
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]));
}
}
}
}
}
So Die Frage ist: Soll ich die using
Anweisung auch in der SqlCommand
und in der SqlDataReader
verwenden oder werden sie automatisch am Ende des SqlConnection
using
Codeblocks angeordnet.
Mögliches Duplikat von [Muss SqlDataReader manuell geschlossen und entsorgt werden?] (Http://stackoverflow.com/questions/744051/is-it-necessary-to-manually-close-and-dispose-of- sqldatareader) –
Auch verwandt: [Wird das Setzen einer "using" -Anweisung um einen DataReader es schließen?] (http://stackoverflow.com/q/2157276/456814). –