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.StringgetMetaDataName(PyObject name)Some database vendors are case sensitive on calls to DatabaseMetaData, most notably Oracle.ProceduregetProcedure(PyCursor cursor, PyObject name)A factory method for determing the correct procedure class to use per the cursor type.PyObjectgetPyObject(java.sql.CallableStatement stmt, int col, int type)Given a CallableStatement, column and type, return the appropriate Jython object.PyObjectgetPyObject(java.sql.ResultSet set, int col, int type)Given a ResultSet, column and type, return the appropriate Jython object.PyObjectgetRowId(java.sql.Statement stmt)Returns the row id of the last executed statement.voidpostExecute(java.sql.Statement stmt)A callback after successfully executing the statement.voidpreExecute(java.sql.Statement stmt)A callback prior to each execution of the statement.voidregisterOut(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.voidsetJDBCObject(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.voidsetJDBCObject(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:
getMetaDataNamein 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:
getProcedurein 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:
getRowIdin 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.SQLExceptionA callback prior to each execution of the statement. If the statement is a PreparedStatement, all the parameters will have been set.- Overrides:
preExecutein classDataHandler- Throws:
java.sql.SQLException
-
postExecute
public void postExecute(java.sql.Statement stmt) throws java.sql.SQLExceptionA callback after successfully executing the statement.- Overrides:
postExecutein classDataHandler- Throws:
java.sql.SQLException
-
setJDBCObject
public void setJDBCObject(java.sql.PreparedStatement stmt, int index, PyObject object) throws java.sql.SQLExceptionAny .execute() which uses prepared statements will receive a callback for deciding how to map the PyObject to the appropriate JDBC type.- Overrides:
setJDBCObjectin 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.SQLExceptionAny .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:
setJDBCObjectin 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:
getPyObjectin 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:
getPyObjectin 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.SQLExceptionCalled when a stored procedure or function is executed and OUT parameters need to be registered with the statement.- Overrides:
registerOutin 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
-
-