Package com.ziclix.python.sql
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 Summary
Constructors Constructor Description Jython22DataHandler()
Handle most generic Java data types.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PyObject
__chain__()
Returns a list of datahandlers chained together through the use of delegation.java.lang.String
getMetaDataName(PyObject name)
Some database vendors are case sensitive on calls to DatabaseMetaData, most notably Oracle.Procedure
getProcedure(PyCursor cursor, PyObject name)
A factory method for determing the correct procedure class to use per the cursor type.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.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 com.ziclix.python.sql.DataHandler
checkNull, getSystemDataHandler, read, read, toString
-
-
-
-
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.- Overrides:
getMetaDataName
in classDataHandler
-
getProcedure
public Procedure getProcedure(PyCursor cursor, PyObject name) throws java.sql.SQLException
A factory method for determing the correct procedure class to use per the cursor type.- Overrides:
getProcedure
in classDataHandler
- Parameters:
cursor
- an open cursorname
- the name of the procedure to invoke- Returns:
- an instance of a Procedure
- Throws:
java.sql.SQLException
-
getRowId
public PyObject getRowId(java.sql.Statement stmt) throws java.sql.SQLException
Returns the row id of the last executed statement.- Overrides:
getRowId
in classDataHandler
- Parameters:
stmt
- the current statement- Returns:
- the row id of the last executed statement or None
- Throws:
java.sql.SQLException
- thrown if an exception occurs
-
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.- Overrides:
preExecute
in classDataHandler
- Throws:
java.sql.SQLException
-
postExecute
public void postExecute(java.sql.Statement stmt) throws java.sql.SQLException
A callback after successfully executing the statement.- Overrides:
postExecute
in classDataHandler
- Throws:
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.- Overrides:
setJDBCObject
in classDataHandler
- Parameters:
stmt
- the current PreparedStatementindex
- the index for which this object is boundobject
- 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.- Overrides:
setJDBCObject
in classDataHandler
- Parameters:
stmt
- the current PreparedStatementindex
- the index for which this object is boundobject
- the PyObject in questiontype
- 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.
- Overrides:
getPyObject
in classDataHandler
- Parameters:
set
- the current ResultSet set to the current rowcol
- 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.- Overrides:
getPyObject
in classDataHandler
- Parameters:
stmt
- the CallableStatementcol
- 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.- Overrides:
registerOut
in classDataHandler
- Parameters:
statement
-index
- the JDBC offset column numbercolType
- the column as from DatabaseMetaData (eg, procedureColumnOut)dataType
- the JDBC datatype from TypesdataTypeName
- the JDBC datatype name- Throws:
java.sql.SQLException
-
__chain__
public PyObject __chain__()
Returns a list of datahandlers chained together through the use of delegation.- Overrides:
__chain__
in classDataHandler
- Returns:
- a list of datahandlers
-
-