ich bin die Tage mal beim Studieren der MySQLCommand-Methoden über .Prepare() gestoßen. Nun verwende ich seit vielen Jahren die Parameter, habe aber noch nie diese Methode benutzt vor z. B. .ExecuteNonQuery().
Muss man das gar nicht aufrufen, weil es MySQLCommand von selber aktiviert, wenn es noch nicht gelaufen ist? Wenn nein: welchen Sinn macht ein Prepare, wenn es auch ohne funktioniert?
Die Methode macht durchaus Sinn. Sie wird eingesetzt, wenn man z.B. mit parametrierten Abfragen arbeitet und die Anweisung nur einmal parsen will, aber an verschiedenen Programmstellen die Anweisung mit unterschiedlichen Parametern ausführen will.
Ein typisches Beispiel dürfte eine Schleife sein, bei der man eine Anweisung mit verschiedenen Parametern ausführen möchte. Hierzu wird die Anweisung vor Schleifenbeginn vorbereitet und innerhalb der Schleife immer wieder ausgeführt. Man spart dadurch Zeit, die durch das wiederholte (unnötige) Parsen benötigt würde.
Bei gespeicherten Prozeduren ist es ebenfalls üblich, zunächst die Prozedur vorzubereiten und danach erst auszuführen. Die meisten Treiber, die ich kenne, tolerieren das Weglassen der Vorbereitung und Führen die Vorbereitung automatisch beim Aufruf durch. Für die bessere Kontrolle habe ich mir allerdings angewöhnt, die Aufrufe selbst zu kontrollieren und benutze deshalb auch die Prepare-Methode.
Die Methode ist übrigens nicht MySQL-spezifisch - sie wird praktisch bei allen Datenbanken so angeboten.
Danke für Deine Antwort... das habe ich mir schon so gedacht. Parameter sind für Schleifen ja ideal. Ich werde mir das wohl zukünftig angewöhnen, mit zu coden ;-)