Exemple de restructuration pureQuery : méthode intégrée renvoyant un ensemble de résultats

Le code illustré dans cet exemple montre comment restructurer une méthode intégrée renvoyant un ensemble de résultats dans une application pureQuery.

La classe DepartmentInlineSample montre comment accéder au tableau DEPARTMENT en ligne. Cette classe, qui a été générée par pureQuery, présente le style de méthode intégrée de la programmation. Elle contient en outre des suggestions et des exemples d'instructions CREATE, INSERT, UPDATE et DELETE.

Vous pouvez créer une procédure mémorisée Java à partir de la méthode restructurée newInline.

package INLINE;

// Imports
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Iterator;
import com.ibm.pdq.runtime.Data;
import pureQuery.example.SampleUtil;
import com.ibm.pdq.runtime.ResultIterator;
import com.ibm.pdq.runtime.factory.DataFactory;

import java.sql.*;

public class DepartmentInlineSample {

  public static void newInline(ResultSet[] rs) throws SQLException,Exception{
    Connection con = DriverManager.getConnection("jdbc:default:connection");
    Data d = DataFactory.getData(con);
	
    rs[0] = d.queryResults(
       "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
             + "  FROM DEPARTMENT");
}

  public static Data db = null;
  /**
   * @param args
   */

  public static void main(String[] args) {
    try {
      if (args.length < 1) {
        SampleUtil.println("Tous les arguments requis n'ont pas été fournis.");
        return;
      }
      db = SampleUtil.getData(
               "jdbc:db2://iicriollo3.svl.ibm.com:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=true;",
               "db2admin", args[0]);
      db.setAutoCommit(false);
      Iterator<Department> getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
               Department.class);

      Department bean = null;
      if (getDepartments.hasNext()) {
        bean = getDepartments.next();
        ((ResultIterator<Department>) getDepartments).close();
      } else {
        SampleUtil.println("L'ensemble de résultats est vide.");
        db.rollback();
        return;
      }
      Department getDepartment = db.queryFirst(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT"
                     + "  WHERE DEPTNO = :deptno",
               Department.class, bean);
      SampleUtil.printClass(getDepartment);

      db.update(
              "UPDATE DEPARTMENT"
                     + "  SET DEPTNO = :deptno, DEPTNAME = :deptname, MGRNO = :mgrno,"
                     + "      ADMRDEPT = :admrdept, LOCATION = :location"
                     + "  WHERE DEPTNO = :deptno",
              bean);
      getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
              Department.class);
      SampleUtil.println("Résultats de la mise à jour (bean)");
      SampleUtil.printAll(getDepartments);

      db.update("DELETE FROM DEPARTMENT"
                     + " WHERE DEPTNO = :deptno", bean);
      getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
              Department.class);
      SampleUtil.println("Résultats de la suppression (?)");
      SampleUtil.printAll(getDepartments);

      db.update(
              "INSERT INTO DEPARTMENT (DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION)"
                     + "  VALUES (:deptno, :deptname, :mgrno, :admrdept, :location)",
              bean);
      getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
              Department.class);
      SampleUtil.println("Résultats de l'insertion (bean)");
      SampleUtil.printAll(getDepartments);

      db.commit();
    } catch (Exception exp) {
      SampleUtil.println(exp.getMessage());
      SampleUtil.println(exp.toString());
      if (db != null)
        db.rollback();
    } finally {
      if (db != null)
        db.close();
    }
  }

}

Commentaires