Frage

In diesem Satz:

myCommand.ExecuteReader(CommandBehavior.CloseConnection)

hat es enge Verbindung bei Ausnahme?

War es hilfreich?

Lösung

Es gibt viele Möglichkeiten, dass der Befehl falsch machen kann.

Es ist letztlich die Close-Methode des Datenleser, der die Verbindung geschlossen wird, sofern nichts falsch vorher gegangen ist.

Wenn es eine Ausnahme, die innerhalb ExecuteReader oder einer ihrer aufgerufenen Methoden auftreten, bevor das eigentliche Datareader-Objekt aufgebaut ist, dann nicht, wird die Verbindung nicht geschlossen werden.

Im Falle einer Ausnahme, ich würde es nicht vertrauen die Verbindung zu schließen.

Andere Tipps

Der sicherste Weg, eine „normale“ Abfrage zu tun ist,

using (var conn = new SqlConnection("..."))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "...";
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // ...
            }
        }
    }
}

Ausnahmen können außerhalb dieser Code abgefangen werden.

Es hängt davon ab, wo die Ausnahme auftritt!

Wenn Sie Ihren Versuch fangen richtig strukturieren, wird es in Ordnung sein.

Zum Beispiel:

SqlCommand myCommand = new SqlCommand();

try
{
   myCommand.dostuff();
}
catch(Exception ex)
{
  // display error message
}
finally
{
  myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}

Wenn die Zeile:. MyCommand.ExecuteReader (CommandBehavior.CloseConnection) ausfällt (? Vielleicht hat die Datenbank zurückgegangen), dann kann die Verbindung nicht programmatisch geschlossen werden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top