Vérifiez que votre système est conforme aux exigences de configuration logicielle et matérielle. Voir Configuration requise pour Optim pureQuery Runtime.
L'optimisation client n'oblige pas à détenir ces composants ni modifier votre code. Elle préfère modifier la manière dont le pilote JDBC interagit avec une application.
Pour exécuter de manière statique les instructions SQL se trouvant dans une application d'API différente de pureQuery, procédez comme suit :
Cet exemple utilise l'application d'API différente de pureQuery suivante :
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.pdqxmlA l'issue de l'application, le répertoire de travail contient un fichier pureQueryXML appelé Sample1Cptr.pdqxml
Toutes les instructions d'un seul fichier pureQueryXML sont rassemblées par StaticBinder. Par conséquent, si votre application se connecte et exécute SQL en fonction de plusieurs bases de données, vous devez créer un fichier pureQueryXML pour chaque URL de connexion ou objet DataSource.
Avec une application plus importante, vous pouvez capturer des instructions SQL de manière incrémentielle. Vous pouvez capturer un certain nombre d'instructions SQL dans le cadre d'une exécution initiale, puis capturer les instructions restantes dans le même fichier lors d'exécutions ultérieures. Toutefois, si vous modifiez la source de l'application, sans modifier les URL des différents objets de connexion lors de la configuration de plusieurs fichiers pureQueryXML, vous devez modifier vos fichiers pureQueryXML et relancer le processus de capture.
Vous devez capturer les instructions SQL pendant le test de l'application d'API différente de pureQuery, en les exécutant en fonction de bases de données similaires à celles que vous prévoyez d'utiliser lors du déploiement de votre application vers une environnement de production.
java com.ibm.pdq.tools.Configure -pureQueryXml Sample1Cptr.pdqxml –rootPkgName SMPL1 -collection COLL01
Si vous exécutez l'utilitaire Configure sur un fichier pureQueryXML, puis capturez plusieurs instructions SQL dans ce fichier, vous devez de nouveau exécuter l'utilitaire Configure sur le fichier.
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
Par défaut, votre application peut exécuter de manière dynamique des instructions SQL que vous n'avez pas capturées.