Hallo,
bei Dir gibt es zweimal falsches Verständnis:
Unter ADO.NET ist das normale Verhalten, dass eine DbConnection erzeugt (new oder Create) und geöffnet (Open) wird, wenn sie gebraucht wird, und unmittelbar danach geschlossen (Close) und aufgelöst (Dispose) wird. Um das zu vereinfachen, wird empfohlen, das alles in einen using-Block einzuschließen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| using(DbConnection conn = new DbConnection(connString)) { using(DbCommand cmd = new DbCommand(conn)) { conn.Open(); cmd.ExecuteNonQuery(); } } |
Damit das Öffnen und Schließen nicht zuviel Zeit verbraucht, benutzt NET ConnectionPooling. Du kannst Dich darauf verlassen, dass das vernünftig abläuft.
Dein zweites Problem ist der Geltungsbereich der Variablen conn:
Zitat: |
allerdings sobald die Methode verlassen wurde |
... dann ist diese Variable, also das damit verbundene Objekt futsch (also geschlossen und aufgelöst). Wegen des ConnectionPooling gibt es sie aber "intern" noch und kann schnell reaktiviert werden.
Das sollte es etwas klarer machen. Jürgen
PS.
Code sollte nicht als "Zitat" markiert werden, sondern mit C# und den Plus-Button. Danke, Sebastian!