Пример #1
0
        static internal NativeDBType FromDBType(short dbType, bool isLong, bool isFixed)
        {
            switch (dbType)
            {
            //case EMPTY:
            //case NULL:
            case I2:
                return(D_SmallInt);

            case I4:
                return(D_Integer);

            case R4:
                return(D_Single);

            case R8:
                return(D_Double);

            case CY:
                return(D_Currency);

            case DATE:
                return(D_Date);

            case BSTR:
                return(D_BSTR);

            case IDISPATCH:
                return(D_IDispatch);

            case ERROR:
                return(D_Error);

            case BOOL:
                return(D_Boolean);

            case VARIANT:
                return(D_Variant);

            case IUNKNOWN:
                return(D_IUnknown);

            case DECIMAL:
                return(D_Decimal);

            case I1:
                return(D_TinyInt);

            case UI1:
                return(D_UnsignedTinyInt);

            case UI2:
                return(D_UnsignedSmallInt);

            case UI4:
                return(D_UnsignedInt);

            case I8:
                return(D_BigInt);

            case UI8:
                return(D_UnsignedBigInt);

            case FILETIME:
                return(D_Filetime);

            case GUID:
                return(D_Guid);

            case BYTES:
                return((isLong) ? D_LongVarBinary : (isFixed) ? D_Binary : D_VarBinary);

            case STR:
                return((isLong) ? D_LongVarChar : (isFixed) ? D_Char : D_VarChar);

            case WSTR:
                return((isLong) ? D_LongVarWChar : (isFixed) ? D_WChar : D_VarWChar);

            case NUMERIC:
                return(D_Numeric);

            //case UDT:
            case DBDATE:
                return(D_DBDate);

            case DBTIME:
                return(D_DBTime);

            case DBTIMESTAMP:
                return(D_DBTimeStamp);

            case HCHAPTER:
                return(D_Chapter);

            case PROPVARIANT:
                return(D_PropVariant);

            case VARNUMERIC:
                return(D_VarNumeric);

            case XML:
                return(D_Xml);

            case UDT:
                return(D_Udt);

            //case VECTOR:
            //case ARRAY:
            //case BYREF:
            //case RESERVED:
            default:
                if (0 != (NativeDBType.VECTOR & dbType))
                {
                    throw ODB.DBBindingGetVector();
                }
                return(D_Variant);
            }
        }
        internal static NativeDBType FromDBType(short dbType, bool isLong, bool isFixed)
        {
            switch (dbType)
            {
            case 2:
                return(D_SmallInt);

            case 3:
                return(D_Integer);

            case 4:
                return(D_Single);

            case 5:
                return(D_Double);

            case 6:
                return(D_Currency);

            case 7:
                return(D_Date);

            case 8:
                return(D_BSTR);

            case 9:
                return(D_IDispatch);

            case 10:
                return(D_Error);

            case 11:
                return(D_Boolean);

            case 12:
                return(D_Variant);

            case 13:
                return(D_IUnknown);

            case 14:
                return(D_Decimal);

            case 0x10:
                return(D_TinyInt);

            case 0x11:
                return(D_UnsignedTinyInt);

            case 0x12:
                return(D_UnsignedSmallInt);

            case 0x13:
                return(D_UnsignedInt);

            case 20:
                return(D_BigInt);

            case 0x15:
                return(D_UnsignedBigInt);

            case 0x40:
                return(D_Filetime);

            case 0x80:
                if (isLong)
                {
                    return(D_LongVarBinary);
                }
                if (isFixed)
                {
                    return(D_Binary);
                }
                return(D_VarBinary);

            case 0x81:
                if (isLong)
                {
                    return(D_LongVarChar);
                }
                if (isFixed)
                {
                    return(D_Char);
                }
                return(D_VarChar);

            case 130:
                if (isLong)
                {
                    return(D_LongVarWChar);
                }
                if (isFixed)
                {
                    return(D_WChar);
                }
                return(D_VarWChar);

            case 0x83:
                return(D_Numeric);

            case 0x84:
                return(D_Udt);

            case 0x85:
                return(D_DBDate);

            case 0x86:
                return(D_DBTime);

            case 0x87:
                return(D_DBTimeStamp);

            case 0x88:
                return(D_Chapter);

            case 0x8a:
                return(D_PropVariant);

            case 0x8b:
                return(D_VarNumeric);

            case 0x8d:
                return(D_Xml);

            case 0x48:
                return(D_Guid);
            }
            if ((0x1000 & dbType) != 0)
            {
                throw ODB.DBBindingGetVector();
            }
            return(D_Variant);
        }