static private OracleTypeToValueType ( OracleType oleDbType ) : |
||
oleDbType | OracleType | |
Результат |
internal static Type OracleTypeToValueType(OracleType oleDbType) {
switch (oleDbType) {
// case OracleType.BigInt : return DbTypes.TypeOfInt64;// typeof(long);
// case OracleType.Binary : return DbTypes.TypeOfByteArray;
// case OracleType.Boolean : return DbTypes.TypeOfBoolean;
// case OracleType.BSTR : return DbTypes.TypeOfString;
case OracleType.BFile : return TypeOfByteArray;
case OracleType.Blob : return TypeOfByteArray;
case OracleType.Byte : return TypeOfByte;
case OracleType.Char : return TypeOfString;
case OracleType.Clob : return TypeOfCharArray;
case OracleType.Cursor : return TypeOfIDataReader;
case OracleType.DateTime : return TypeOfDateTime;
// case OracleType.Currency : return TypeOfDecimal;
// case OracleType.Date : return TypeOfDateTime;
// case OracleType.DBDate : return TypeOfDateTime;
// case OracleType.DBTime : return TypeOfTimespan;
// case OracleType.DBTimeStamp : return TypeOfDateTime;
// case OracleType.Decimal : return TypeOfDecimal;
case OracleType.Double : return TypeOfDouble;
case OracleType.Float : return TypeOfFloat;
case OracleType.Int16 : return TypeOfInt16;
case OracleType.Int32 : return TypeOfInt32;
case OracleType.IntervalDayToSecond : return TypeOfTimespan;
case OracleType.IntervalYearToMonth : return TypeOfInt32;
case OracleType.LongRaw : return TypeOfByteArray;
// case OracleType.Empty : return null; //typeof(DBNull);
// case OracleType.Error : return typeof(Exception);
// case OracleType.Filetime : return TypeOfDateTime;
// case OracleType.Guid : return TypeOfGuid;
// case OracleType.IDispatch : return TypeOfObject;
// case OracleType.Integer : return TypeOfInt32;
// case OracleType.IUnknown : return TypeOfObject;
// case OracleType.LongVarBinary : return TypeOfByteArray;
case OracleType.LongVarChar : return TypeOfString;
case OracleType.NChar : return TypeOfString;
case OracleType.NClob : return TypeOfString;
case OracleType.Number : return TypeOfDecimal;
case OracleType.NVarChar : return TypeOfString;
case OracleType.Raw : return TypeOfByteArray;
case OracleType.RowId : return TypeOfString;
case OracleType.SByte : return TypeOfSByte;
case OracleType.Timestamp : return TypeOfTimespan;
case OracleType.TimestampLocal : return TypeOfTimespan;
case OracleType.TimestampWithTZ : return TypeOfTimespan;
case OracleType.UInt16 : return TypeOfUInt16;
case OracleType.UInt32 : return TypeOfUInt32;
case OracleType.VarChar : return TypeOfString;
// case OracleType.LongVarWChar : return TypeOfString;
// case OracleType.Numeric : return TypeOfDecimal;
// case OracleType.PropVariant : return TypeOfObject;
// case OracleType.Single : return TypeOfFloat;
// case OracleType.SmallInt : return TypeOfInt16;
// case OracleType.TinyInt : return TypeOfSByte;
// case OracleType.UnsignedBigInt : return TypeOfUInt64;
// case OracleType.UnsignedInt : return TypeOfUInt32;
// case OracleType.UnsignedSmallInt : return TypeOfUInt16;
// case OracleType.UnsignedTinyInt : return TypeOfByte;
// case OracleType.VarBinary : return TypeOfByteArray;
// case OracleType.VarChar : return TypeOfString;
// case OracleType.Variant : return TypeOfObject;
// case OracleType.VarNumeric : return TypeOfDecimal;
// case OracleType.VarWChar : return TypeOfString;
// case OracleType.WChar : return TypeOfString;
default : return TypeOfObject;
}
}
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); }