Ejemplo de refactorización de pureQuery: método en línea que devuelve un resultado

El código de este ejemplo muestra como refactorizar un método en línea que devuelve un conjunto de resultados en una aplicación pureQuery.

La clase DepartmentInlineSample muestra cómo acceder a la tabla DEPARTMENT en línea. Esta clase, que pureQuery ha generado, muestra el estilo de programación de método en línea y contiene sugerencias y ejemplos para sentencias CREATE, INSERT, UPDATE y DELETE.

Puede crear un procedimiento almacenado de Java™ a partir del método newInline refactorizado.

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("All required arguments were not provided.");
        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("Result set is empty.");
        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("Results for update (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("Results for - delete (?)");
      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("Results for - insert (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();
    }
  }

}

Comentarios