Avatar billede apocryphal Nybegynder
17. november 2003 - 23:48 Der er 5 kommentarer og
1 løsning

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
Avatar billede clausjul Nybegynder
18. november 2003 - 08:50 #1
Du har nok glemt reader.Close() - Jeg ved ikke om det har betydning, men prøv at indsætte den i

while(reader.Read())
    {
        ...
    }
reader.Close()
Avatar billede pelkjaer Nybegynder
18. november 2003 - 16:02 #2
Min oplevelse er også at CommandBehavior.CloseConnection ikke lukke forbindelsen

Prøv at køre en

Response.Write(DbCon.State);

Og er den åben, så luk den med en close(); bagefter.
Avatar billede pelkjaer Nybegynder
18. november 2003 - 16:10 #3
Min kommentar bygger dog på erfaringer med Corelabs kommercielle ellers glimrende MySql provider.
Avatar billede apocryphal Nybegynder
18. november 2003 - 16:35 #4
Okey...

CommandBehavior.CloseConnection virker nemlig perfekt med Microsoft SQL Server - uden at Readeren lukkes.

Readeren burde heller ikke have nogen relation til Connectionen - da den er Foreward only?

--
Jonas
Avatar billede pelkjaer Nybegynder
18. november 2003 - 16:41 #5
Næ, men om ikke andet skader det ikke at lukke readeren, og så kan du jo bagefter udskrive State for at se om den så er lukket (hvad den ikke er).
Avatar billede apocryphal Nybegynder
29. november 2005 - 14:46 #6
Lukket...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester