## com.ziclix.python.sql
Class DataHandler

    java.lang.Object
      |
      +--com.ziclix.python.sql.DataHandler

Direct Known Subclasses:
  FilterDataHandler

public class DataHandler
extends java.lang.Object

The DataHandler is responsible mapping the JDBC data type to a Jython object. Depending on the version of the JDBC implementation and the particulars of the driver, the type mapping can be significantly different. This interface can also be used to change the behaviour of the default mappings provided by the cursor. This might be useful in handling more complicated data types such as BLOBs, CLOBs and Arrays.

Version:
  $Revision: 1.5 $
Author:
  brian zimmer
, last revised by $Author: bzimmer $

Constructor Summary
`DataHandler()` Handle most generic Java data types.

Method Summary
`static boolean` `checkNull(java.sql.PreparedStatement stmt, int index, PyObject object, int type)` Handles checking if the object is null or None and setting it on the statement.
`java.lang.String` `getMetaDataName(PyObject name)` Some database vendors are case sensitive on calls to DatabaseMetaData, most notably Oracle.
`java.lang.String` `getProcedureName(PyObject catalog, PyObject schema, PyObject name)` Method getProcedureName
`PyObject` `getPyObject(java.sql.CallableStatement stmt, int col, int type)` Given a CallableStatement, column and type, return the appropriate Jython object.
`PyObject` `getPyObject(java.sql.ResultSet set, int col, int type)` Given a ResultSet, column and type, return the appropriate Jython object.
`PyObject` `getRowId(java.sql.Statement stmt)` Returns the row id of the last executed statement.
`void` `postExecute(java.sql.Statement stmt)` A callback after successfully executing the statement.
`void` `preExecute(java.sql.Statement stmt)` A callback prior to each execution of the statement.
`static byte[]` `read(java.io.InputStream stream)` Since the driver needs to the know the length of all streams, read it into a byte[] array.
`static java.lang.String` `read(java.io.Reader reader)` Read all the chars from the Reader into the String.
`void` `registerOut(java.sql.CallableStatement statement, int index, int colType, int dataType, java.lang.String dataTypeName)` Called when a stored procedure or function is executed and OUT parameters need to be registered with the statement.
`void` `setJDBCObject(java.sql.PreparedStatement stmt, int index, PyObject object)` Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.
`void` `setJDBCObject(java.sql.PreparedStatement stmt, int index, PyObject object, int type)` Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### DataHandler

    public DataHandler()

  Handle most generic Java data types.

Method Detail

### getMetaDataName

    public java.lang.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.

  Returns:
    String

### getProcedureName

    public java.lang.String getProcedureName(PyObject catalog,
                                             PyObject schema,
                                             PyObject name)

  Method getProcedureName

  Returns:
    String

### getRowId

    public PyObject getRowId(java.sql.Statement stmt)
                      throws java.sql.SQLException

  Returns the row id of the last executed statement.

  Returns:
    PyObject
  Throws:
    `java.sql.SQLException`

### preExecute

    public void preExecute(java.sql.Statement stmt)
                    throws java.sql.SQLException

  A callback prior to each execution of the statement. If the statement is a PreparedStatement, all the parameters will have been set.

    `java.sql.SQLException`

### postExecute

    public void postExecute(java.sql.Statement stmt)
                     throws java.sql.SQLException

  A callback after successfully executing the statement.

    `java.sql.SQLException`

### setJDBCObject

    public void setJDBCObject(java.sql.PreparedStatement stmt,
                              int index,
                              PyObject object)
                       throws java.sql.SQLException

  Any .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.

  Parameters:
    `stmt` - the current PreparedStatement
    `index` - the index for which this object is bound
    `object` - the PyObject in question
  Throws:
    `java.sql.SQLException`

### setJDBCObject

    public void setJDBCObject(java.sql.PreparedStatement stmt,
                              int index,
                              PyObject object,
                              int type)
                       throws java.sql.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.

  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:
    `java.sql.SQLException`

### getPyObject

    public PyObject getPyObject(java.sql.ResultSet set,
                                int col,
                                int type)
                         throws java.sql.SQLException

  Given a ResultSet, column and type, return the appropriate Jython object.

  Note: DO NOT iterate the ResultSet.

  Parameters:
    `set` - the current ResultSet set to the current row
    `col` - the column number (adjusted properly for JDBC)
    `type` - the column type
  Throws:
    `java.sql.SQLException` - if the type is unmappable

### getPyObject

    public PyObject getPyObject(java.sql.CallableStatement stmt,
                                int col,
                                int type)
                         throws java.sql.SQLException

  Given a CallableStatement, column and type, return the appropriate Jython object.

  Parameters:
    `stmt` - the CallableStatement
    `col` - the column number (adjusted properly for JDBC)
    `type` - the column type
  Throws:
    `java.sql.SQLException` - if the type is unmappable

### registerOut

    public void registerOut(java.sql.CallableStatement statement,
                            int index,
                            int colType,
                            int dataType,
                            java.lang.String dataTypeName)
                     throws java.sql.SQLException

  Called when a stored procedure or function is executed and OUT parameters need to be registered with the statement.

  Throws:
    `java.sql.SQLException`

### checkNull

    public static final boolean checkNull(java.sql.PreparedStatement stmt,
                                          int index,
                                          PyObject object,
                                          int type)
                                   throws java.sql.SQLException

  Handles checking if the object is null or None and setting it on the statement.

  Returns:
    true if the object is null and was set on the statement, false otherwise
    `java.sql.SQLException`

### read

    public static final byte[] read(java.io.InputStream stream)

  Since the driver needs to the know the length of all streams, read it into a byte[] array.

  Returns:
    the stream as a byte[]

### read

    public static final java.lang.String read(java.io.Reader reader)

  Read all the chars from the Reader into the String.

  Returns:
    the contents of the Reader in a String

Jython homepage