Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#2

AW: IBDAC: Prepare/Unprepare, was macht Firebird

  Alt 24. Sep 2015, 21:09
falls du die ibexpert Vollversion hast (oder auch andere firebird traceapi tools), kannst du sehen, was der Server daraus macht, das ist meistens viel wichtiger als das was deine Komponente da so als Protokoll einträgt.

Bei fast allen Komponenten gilt folgendes:

wenn du ein prepare aufrufst, wird die Komponente kein automatisches unprepare machen. Sobald du aber der SQL Text änderst, wird ein unprepare gemacht.

Wird prepare nicht explizit aufgerufen, dann wird nach open/close bzw nach ExecSql automatisch ein unprepare gemacht und mit dem nächsten open/close oder execsql ebenfalls wieder ein neuer prepare/unprepare zyklus.

Dein Code macht beim einmaligen Aufruf nicht mehr und nicht weniger als jede Komponente auf API Ebene auch machen müsste. In der ExecSQL Implementation kommt irgendwo oben sinngemäß if not prepared then prepare ..... und am ende das zugehörige unprepare, falls das unprepared war.

Im Setter für die SQL Property wird auf jeden Fall ein if prepared then unprepare aufgerufen.

wenn du aus den zeilen

Code:
Q.Prepare;
Q.ExecSQL;
Q.UnPrepare;
das hier gemacht hättest, wäre es auf der Datenbankseite identisch abgelaufen.

Code:
Q.ExecSQL;
Erst in Schleifen mit unterschiedlichen Parametern ist ein explizites Prepare/Unprepare oft sinnvoll, aber auch nicht immer ...
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat