Umgang mit verschiedenen ConnectionStates vor dem öffnen SqlConnection
Wenn Sie brauchen, um öffnen Sie ein SqlConnection-vor der Erteilung Abfragen, können Sie einfach behandeln Sie alle nicht-Offenen ConnectionStates in der gleichen Weise? Zum Beispiel:
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
Ich habe irgendwo gelesen, dass für ConnectionState.Gebrochen wird die Verbindung geschlossen werden muss, bevor Ihr wieder geöffnet. Hat jemand Erfahrung mit diesem? Vielen Dank-
InformationsquelleAutor wnka | 2008-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://msdn.microsoft.com/en-us/library/system.data.connectionstate.aspx
Gebrochen Zustand der Verbindung muss geschlossen und erneut geöffnet werden, bevor Sie berechtigt, für die weitere Nutzung.
Edit: Leider schließen eine geschlossene Verbindung wird balk als gut. Sie müssen testen Sie die ConnectionState, bevor Sie handeln auf einer unbekannten Verbindung. Vielleicht ein kurzer switch-Anweisung könnte den trick tun.
InformationsquelleAutor ddc0660
Dies ist nicht direkt die Beantwortung Ihrer Frage, aber ist die beste Methode zum öffnen und schließen einer Verbindung für jeden Zugriff auf die Datenbank. ADO.NET Verbindungs-pooling sicher, dass dies gut funktioniert. Es ist besonders wichtig, dies zu tun in server-apps (z.B. ASP.NET), aber ich würde es tun, auch in einer WinForms app greift direkt auf die Datenbank.
Beispiel:
In dieser Weise, die Sie nie brauchen, um zu überprüfen, den Zustand der Verbindung beim öffnen einer Verbindung.
Die using-Anweisung sorgt für die Verbindung wird geschlossen, selbst wenn eine Ausnahme ausgelöst wird. Sie wartet nicht darauf, für die GC, um es zu schließen.
Diese mit Muster, wie alle Daten zugreifen Aussehen sollte. Du wirst nie Leck-verbindungen auf diese Weise. Joe, ich würde auch hinzufügen "using (SqlCommand-Befehl..." in der Verwendung für die SqlConnection -, und empfehlen eine Konstante für den query-string, um sicherzustellen, es kommt immer aus dem gleichen pool.
InformationsquelleAutor Joe
Können Sie behandeln Sie die gleiche Weise. Ich war immer zahlreichen Anschluss-state == gebrochen, während mit IE9. Es ist etwas grundlegend falsch mit IE9 in dieser Hinsicht, da keine anderen browser hatten dieses Problem der gebrochenen Zuständen nach 5 oder 6 updates der Datenbank-Tabellen. Also habe ich mit dem Objekt-Kontext. Also im Grunde nur schließen Sie es und öffnen Sie es erneut.
Ich habe diesen code vor alle meine liest und updates in der businss-Logik-Schicht:
InformationsquelleAutor Rudy Hinojosa