05. oktober 2005 - 09:15Der er
12 kommentarer og 2 løsninger
ADO.NET check database forbindelse
Hejsa
jeg sidder her og roder lidt med at lave en generel database klasse med ADO.net, jeg har dog et problem med en metode der skal tjekke om forbindelsen til databasen er intakt
efter hvad jeg har forstået arbejder ADO.NET med en connection pool, så ADO.NET skulle sørge for jeg får den samme reelle forbindelse til databasen, så længe jeg bruger den samme connection string
og som sædvanlig har du ret, metoden virker faktisk, bare windows der ikke havde termineret processen korrekt
Det er korrekt, at der bruges connection pool, men udnyttelsen af poolen kræver, at connection rent faktisk er lukket for, at den kan tildeles igen. Du henter et nyt connection objekt til at lukke en connection.
Prøv følgende i stedet:
public static bool CheckConnection() { using (SqlConnection cnn = NewConnection()) { try { cnn.Open(); return cnn.State == ConnectionStatus.Open; } finally { if (cnn.State == ConnectionStatus.Open) cnn.Close(); } } }
tja jeg må vel skulle have en catch blok der fanger den evt. SqlException Open() smider og sørger for der bliver retunreret ConnectionState.Closed (false)
er "Broken" en endnu ikke implementeret værdi af State propertien på IDbConnection, da jeg hele tiden forsøger at teste om der er liv i min forbindelse kan jeg ikke bare teste på ConnectionState.Open, da denne altid vil være true så fremt der har været forbindelse, jeg antager dette sker fordi det vil kræve for mange rescourcer at konstant skulle undersøge om der er forbindelse til database serveren.
men hvis arne_v lige ligger et svar vil jeg fordele lidt point
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.