return value;
return resultSet.wasNull() ? null : value;
	protected Object extractColumnValue(ResultSet resultSet, String columnName, int jdbcType) throws SQLException	{		Object value;		switch (jdbcType)		{		    case Types.CHAR:		    case Types.VARCHAR:		    case Types.LONGVARCHAR:		        value = resultSet.getString(columnName);		        break;		    case Types.NUMERIC:		    case Types.DECIMAL:		        value = resultSet.getBigDecimal(columnName);		        break;		    case Types.BIT:		        value = new Boolean(resultSet.getBoolean(columnName));		        break;		    case Types.TINYINT:		    case Types.SMALLINT:		    case Types.INTEGER:		        value = new Integer(resultSet.getInt(columnName));		        break;		    case Types.BIGINT:		        value = new Long(resultSet.getLong(columnName));		        break;		    case Types.REAL:		        value = new Float(resultSet.getFloat(columnName));		        break;		    case Types.FLOAT:		    case Types.DOUBLE:		        value = new Double(resultSet.getDouble(columnName));		        break;		    case Types.BINARY:		    case Types.VARBINARY:		    case Types.LONGVARBINARY:		        value = resultSet.getBytes(columnName);		        break;		    case Types.DATE:		        value = resultSet.getDate(columnName);		        break;		    case Types.TIME:		        value = resultSet.getTime(columnName);		        break;		    case Types.TIMESTAMP:		        value = resultSet.getTimestamp(columnName);		        break;		    case Types.CLOB:		        Clob clob = resultSet.getClob(columnName);		        if ((clob == null) || (clob.length() > Integer.MAX_VALUE))		        {		            value = clob;		        }		        else		        {		            value = clob.getSubString(1l, (int)clob.length());		        }		        break;		    case Types.BLOB:		        Blob blob = resultSet.getBlob(columnName);		        if ((blob == null) || (blob.length() > Integer.MAX_VALUE))		        {		            value = blob;		        }		        else		        {		            value = blob.getBytes(1l, (int)blob.length());		        }		        break;		    case Types.ARRAY:		        value = resultSet.getArray(columnName);		        break;		    case Types.REF:		        value = resultSet.getRef(columnName);		        break;		    default:		        // special handling for Java 1.4/JDBC 3 types		        if (Jdbc3Utils.supportsJava14JdbcTypes() &&		            (jdbcType == Jdbc3Utils.determineBooleanTypeCode()))		        {		            value = new Boolean(resultSet.getBoolean(columnName));		        }		        else		        {		            value = resultSet.getObject(columnName);		        }		        break;		}		return value;	}