Class Jython22DataHandler

java.lang.Object
com.ziclix.python.sql.DataHandler
com.ziclix.python.sql.Jython22DataHandler

public class Jython22DataHandler extends DataHandler
A copy of the DataHandler class as it was before Jython 2.5. By that version, some backward-incompatible changes was made, as returning datetime.* objects for DATE, TIME and TIMESTAMP columns, instead of java.sql.* classes.
Author:
brian zimmer
  • Constructor Details

    • Jython22DataHandler

      public Jython22DataHandler()
      Handle most generic Java data types.
  • Method Details

    • getMetaDataName

      public String getMetaDataName(PyObject name)
      Some database vendors are case sensitive on calls to DatabaseMetaData, most notably Oracle. This callback allows a DataHandler to affect the name.
      Overrides:
      getMetaDataName in class DataHandler
    • getProcedure

      public Procedure getProcedure(PyCursor cursor, PyObject name) throws SQLException
      A factory method for determing the correct procedure class to use per the cursor type.
      Overrides:
      getProcedure in class DataHandler
      Parameters:
      cursor - an open cursor
      name - the name of the procedure to invoke
      Returns:
      an instance of a Procedure
      Throws:
      SQLException
    • getRowId

      public PyObject getRowId(Statement stmt) throws SQLException
      Returns the row id of the last executed statement.
      Overrides:
      getRowId in class DataHandler
      Parameters:
      stmt - the current statement
      Returns:
      the row id of the last executed statement or None
      Throws:
      SQLException - thrown if an exception occurs
    • preExecute

      public void preExecute(Statement stmt) throws SQLException
      A callback prior to each execution of the statement. If the statement is a PreparedStatement, all the parameters will have been set.
      Overrides:
      preExecute in class DataHandler
      Throws:
      SQLException
    • postExecute

      public void postExecute(Statement stmt) throws SQLException
      A callback after successfully executing the statement.
      Overrides:
      postExecute in class DataHandler
      Throws:
      SQLException
    • setJDBCObject

      public void setJDBCObject(PreparedStatement stmt, int index, PyObject object) throws SQLException
      Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.
      Overrides:
      setJDBCObject in class DataHandler
      Parameters:
      stmt - the current PreparedStatement
      index - the index for which this object is bound
      object - the PyObject in question
      Throws:
      SQLException
    • setJDBCObject

      public void setJDBCObject(PreparedStatement stmt, int index, PyObject object, int type) throws SQLException
      Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type. The type is the JDBC type as obtained from java.sql.Types.
      Overrides:
      setJDBCObject in class DataHandler
      Parameters:
      stmt - the current PreparedStatement
      index - the index for which this object is bound
      object - the PyObject in question
      type - the java.sql.Types for which this PyObject should be bound
      Throws:
      SQLException
    • getPyObject

      public PyObject getPyObject(ResultSet set, int col, int type) throws SQLException
      Given a ResultSet, column and type, return the appropriate Jython object.

      Note: DO NOT iterate the ResultSet.

      Overrides:
      getPyObject in class DataHandler
      Parameters:
      set - the current ResultSet set to the current row
      col - the column number (adjusted properly for JDBC)
      type - the column type
      Throws:
      SQLException - if the type is unmappable
    • getPyObject

      public PyObject getPyObject(CallableStatement stmt, int col, int type) throws SQLException
      Given a CallableStatement, column and type, return the appropriate Jython object.
      Overrides:
      getPyObject in class DataHandler
      Parameters:
      stmt - the CallableStatement
      col - the column number (adjusted properly for JDBC)
      type - the column type
      Throws:
      SQLException - if the type is unmappable
    • registerOut

      public void registerOut(CallableStatement statement, int index, int colType, int dataType, String dataTypeName) throws SQLException
      Called when a stored procedure or function is executed and OUT parameters need to be registered with the statement.
      Overrides:
      registerOut in class DataHandler
      Parameters:
      statement -
      index - the JDBC offset column number
      colType - the column as from DatabaseMetaData (eg, procedureColumnOut)
      dataType - the JDBC datatype from Types
      dataTypeName - the JDBC datatype name
      Throws:
      SQLException
    • __chain__

      public PyObject __chain__()
      Returns a list of datahandlers chained together through the use of delegation.
      Overrides:
      __chain__ in class DataHandler
      Returns:
      a list of datahandlers