Stellen Sie sicher, dass Ihr System die Hardware- und Softwarevoraussetzungen erfüllt. Siehe Systemvoraussetzungen für InfoSphere Optim pureQuery Runtime.
Die Clientoptimierung erfordert weder diese Komponenten noch Änderungen am Code, sondern ändert die Interaktion zwischen JDBC-Treiber und Anwendung.
Gehen Sie wie folgt vor, um SQL-Anweisungen einer Nicht-pureQuery-API-Anwendung statisch auszuführen:
Das Beispiel verwendet die folgende einfache Nicht-pureQuery-API-Anwendung:
import java.sql.*; import com.ibm.db2.jcc.*; public class Sample1 { public static void main (String[] args) throws SQLException, ClassNotFoundException { Connection jdbcCon=null; try { Class.forName("com.ibm.db2.jcc.DB2Driver"); jdbcCon=DriverManager.getConnection( "jdbc:db2://svl01:500/DB2M", "user01", "myPass"); } catch (SQLException e) { System.out.println(e); } try { PreparedStatement pStmt = jdbcCon.prepareStatement( "INSERT INTO ADMF001.VIEW1(C1, C3, C2) VALUES(?,?,?)"); pStmt.setString(1, "1"); pStmt.setInt(2, 3); pStmt.setDouble(3, 2.0e3); pStmt.executeUpdate(); pStmt.close(); Statement selStmt = jdbcCon.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); ResultSet rs = selStmt.executeQuery( "SELECT * FROM ADMF001.VIEW1 WHERE C2 > 200"); System.out.println("moving to the first row"); if (rs.next()) { System.out.println("deleting it"); Statement stmt = jdbcCon.createStatement(); stmt.executeUpdate( "DELETE FROM ADMF001.VIEW1 WHERE CURRENT OF " + rs.getCursorName()); stmt.close(); } selStmt.close(); } catch (SQLException e) { System.out.println( "Sample1: " + e ); } jdbcCon.close(); } //end main } // end class Sample1
pdq.captureMode=ON pdq.pureQueryXml=Sample1Cptr.pdqxmlNachdem die Anwendung ausgeführt wurde, ist im Arbeitsverzeichnis eine pureQueryXML-Datei mit dem Namen Sample1Cptr.pdqxml vorhanden.
Alle Anweisungen in einer pureQueryXML-Datei werden durch StaticBinder paketiert. Das heißt, wenn Ihre Anwendung Verbindungen zu mehreren Datenbanken herstellt und für diese Datenbanken SQL ausführt, müssen Sie für jede Verbindungs-URL oder jedes Datenquellenobjekt eine pureQueryXML-Datei erstellen.
Wenn es sich um umfangreiche Anwendungen handelt, können Sie auswählen, SQL-Anweisungen auch inkrementell zu erfassen. Sie können einen Teil der SQL-Anweisungen während einer ersten Ausführung erfassen und den Rest der Anweisungen während späteren Ausführungen in denselben Dateien erfassen. Wenn Sie jedoch die Quelle der Anwendung modifizieren, und zwar nicht nur die URLs für andere Verbindungsobjekte beim Einrichten mehrerer pureQueryXML-Dateien, müssen Sie Ihre pureQueryXML-Dateien löschen und den Erfassungsprozess erneut starten.
Erfassen Sie SQL-Anweisungen während Sie Ihre Nicht-pureQuery-API-Anwendung testen und führen Sie sie für Datenbanken aus, die den Datenbanken ähnlich sind, die Sie verwenden wollen, wenn Sie Ihre Anwendung in einer Produktionsumgebung implementieren.
java com.ibm.pdq.tools.Configure -pureQueryXml Sample1Cptr.pdqxml –rootPkgName SMPL1 -collection COLL01
Wenn Sie das Dienstprogramm Configure für eine pureQueryXML-Datei ausführen und mehrere SQL-Anweisungen in dieser Datei erfassen, müssen Sie das Dienstprogramm Configure erneut für die Datei ausführen.
java com.ibm.pdq.tools.StaticBinder –url jdbc:db2://svl01:500/DB2M -username user01 -password myPass -pureQueryXml Sample1Cptr.pdqxml
pdq.executionMode=STATIC pdq.pureQueryXml=Sample1Cptr.pdqxml
Standardmäßig kann Ihre Anwendung alle SQL-Anweisungen dynamisch ausführen, die Sie nicht erfasst haben.