protected sealed override object ConvertValue(object value) { // can not convert null or DbNull to other types if (value == null || value == DBNull.Value) { return(value); } // TBD : some other way to do this? // if (OracleType == OracleType.Binary) { // return value; // } // .NET throws an exception to the user. object convertedValue = value; // note : if we set user parameter jdbc type inside prepare interbal, the db type is not set if (value is IConvertible && (IsDbTypeSet || IsJdbcTypeSet)) { OracleType oleDbType = (IsDbTypeSet) ? OracleType : OracleConvert.JdbcTypeToOracleType((int)JdbcType); Type to = OracleConvert.OracleTypeToValueType(oleDbType); if (!(value is DateTime && to == OracleConvert.TypeOfTimespan)) //anyway will go by jdbc type { convertedValue = Convert.ChangeType(value, to); } } return(convertedValue); }
protected sealed override void SetParameterDbType(ResultSet res) { int jdbcType = res.getInt("DATA_TYPE"); // FIXME : is that correct? if (jdbcType == Types.OTHER) { string typeName = res.getString("TYPE_NAME"); if (String.Compare("REF CURSOR", typeName, true, CultureInfo.InvariantCulture) == 0) { jdbcType = (int)JavaSqlTypes.CURSOR; } else if (String.Compare("BLOB", typeName, true, CultureInfo.InvariantCulture) == 0) { jdbcType = (int)JavaSqlTypes.BLOB; } else if (String.Compare("CLOB", typeName, true, CultureInfo.InvariantCulture) == 0) { jdbcType = (int)JavaSqlTypes.CLOB; } else if (String.Compare("FLOAT", typeName, true, CultureInfo.InvariantCulture) == 0) { jdbcType = (int)JavaSqlTypes.FLOAT; } else if (String.Compare("NVARCHAR2", typeName, true, CultureInfo.InvariantCulture) == 0) { jdbcType = (int)JavaSqlTypes.VARCHAR; } else if (String.Compare("NCHAR", typeName, true, CultureInfo.InvariantCulture) == 0) { jdbcType = (int)JavaSqlTypes.VARCHAR; } } OracleType = OracleConvert.JdbcTypeToOracleType(jdbcType); JdbcType = jdbcType; }
protected override int GetProviderType(int jdbcType) { return((int)OracleConvert.JdbcTypeToOracleType(jdbcType)); }