CommandBehavior.CloseConnection
Hey.Jeg har lige forsøgt at lave noget data tilgang med en MySql ADO.NET Open Source driver (www.bytefx.com).
Jeg indsatte følgende kode:
//Start
MySqlConnection DbCon = Global.GetConnection();
String SQL = "SELECT......";
MySqlCommand command = new MySqlCommand(SQL, DbCon);
MySqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
while(reader.Read())
{
....
}
// Slut
Problemet er her, at efter 10 requests, så får jeg en databasefejl, med at connectionpoolen er fyldt. Tilsyneladende bliver forbindelserne ikke lukket korrekt!?
Jeg erstattede med koden (som virker!):
MySqlConnection DbCon = Global.GetConnection();
try
{
String SQL = "SELECT...";
MySqlCommand command = new MySqlCommand(SQL, DbCon);
MySqlDataReader reader = command.ExecuteReader();
while(reader.Read())
{
...
}
}
finally
{
DbCon.Close();
}
Mit spørgsmål:
Hvorfor fejler den øverste kode?
Er driverens implementation af MySqlCommand.ExecuteReader(...) ikke korrekt? - så den ikke adlyder CommandBehavior.CloseConnection?
- eller har jeg misforstået konceptet med CommandBehavior?
--
Jonas
