Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


18.7.2

Interaktion mit dem Datenbanksystem


Bereits beim Erzeugen eines PreparedStatement-Exemplars wird der SQL-String an das Datenbanksystem geschickt, dort analysiert und die kompilierte SQL-Anweisung zwischengespeichert. Dabei werden die Werte für die Parameter (Bind-Variablen) zunächst offen gelassen. Beim Aufruf der setXXX()-Methoden werden diese Lücken anschließend mit konkreten Werten belegt. Erst beim Aufruf von executeQuery() bzw. executeUpdate() wird die SQL-Anweisung ausgeführt und eventuell eine Ergebnismenge in Form eines ResultSet zurückgeliefert. Dieser Sachverhalt ist in Abbildung 18.17 dargestellt.

Nach der Ausführung kann man bei einem PreparedStatement durch erneuten Aufruf der setXXX()-Methoden die Parameter neu setzen und dieselbe Anweisung erneut, mit veränderten Parametern, ausführen. Dabei wird die initial kompilierte SQL-Anweisung verwendet. Es werden lediglich die Parameter neu gesetzt. Bei variierenden Parametern wird dadurch gegenüber einfachem SQL in der Regel eine bessere Performance erzielt.

Abbildung 18.17: Der Ablauf bei der Ausführung von vorbereitetem SQL
Abbildung 18.17

PreparedStatement stellt lediglich ein Interface dar, das eine Schnittstelle zur Implementierung anbietet. Zur Erfüllung der Schnittstelle muss das Interface nicht unbedingt auf die hier geschilderte Weise implementiert werden. Diese Implementierung wird vom Oracle-JDBC-Treiber unterstützt. Einige kleinere Datenbanksysteme können eine derartige Implementierung nicht bereitstellen, da sie intern keine vorbereiteten SQL-Anweisungen unterstützen. Dennoch können die verfügbaren Treiber eine Implementierung für das PreparedStatement-Interface bereitstellen. Eine derartige Implementierung könnte z. B. das Setzen von Parametern im SQL-String ermöglichen, indem intern lediglich die mit den setXXX() übergebenen Parameter per String-Operationen in den SQL-String eingebaut werden. Das heißt, der Entwickler müsste im Vergleich zu einfachem SQL nicht die SQL-Syntax beim Setzen von Werten in den verschiedenen Datentypen berücksichtigen. Einen Performance-Vorteil bringt eine derartige Implementierung allerdings nicht.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.