Luk en databaseforbindelse med using
skrevet af Niels Brinch
Et hurtigt tip: Man kan lukke sin databaseforbindelse ved hjælp af using. Man behøver ikke lave den klassiske try, catch, finally. Man kan gøre sådan:
SqlConnection conn = DB.GetConnection();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT .... osv.";
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read())
{
// læs data fra readeren med reader.GetString(0) osv.
}
}
MEN! Tro ikke det betyder man kan gøre sådan:
conn.Open();
using (conn)
{
conn.ExecuteNonQuery();
}
Når ovenstående er udført vil din connection stadig være åben! Luk den explicit med conn.Close() i en finally, sådan:
SqlConnection conn = new SqlConnection(connStr);
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO osv....";
conn.Open();
using (conn)
{
cmd.ExecuteNonQuery();
}
}
finally
{
if (conn != null)
{
conn.Close();
}
}
Jeg taler af bitter erfaring ...
2 kommentarer |
2 Kommentarer:
Helt sikkert en god ting at bruge, da det kan gøre koden pænere idet man sparer hele sin try/catch/finally i nogen tilfælde.
Faktisk kan alle objekter der implementerer IDisposable lukkes på denne måde.
Et andet "using" trick er at man kan bruge det til at give namespaces et alias som her:
using MitAlias = Det.Her.Er.Et.Langt.Namespace;
Hold da op det er smart! Og ukendt af de fleste. Det giver street-credit :p
Det fordrer da en selvstændig artikel, gør det ikke?
Send en kommentar
<< Tilbage