ADO对象——获取数据库字段的数据类型

 

       如果想根据字段的数据类型不同,进行不同的操作,就必须知道字段的数据类型。

       例如:

       如果字段的数据类型是日期:则Format类似于*********日的字符串。

       如果字段的数据类型是时间:则Format类似于***:***:***的字符串

 

       本以为使用VARIANT类型的变量获得字段的值,VARIANT中的数据类型就可以区分。

VARIANT的数据类型如下:(在wtypes.h中声明)

* VARENUM usage key,

 *

 * * [V] - may appear in a VARIANT

 * * [T] - may appear in a TYPEDESC

 * * [P] - may appear in an OLE property set

 * * [S] - may appear in a Safe Array

 *

 *

 *  VT_EMPTY            [V]   [P]     nothing

 *  VT_NULL             [V]   [P]     SQL style Null

 *  VT_I2               [V][T][P][S]  2 byte signed int

 *  VT_I4               [V][T][P][S]  4 byte signed int

 *  VT_R4               [V][T][P][S]  4 byte real

 *  VT_R8               [V][T][P][S]  8 byte real

 *  VT_CY               [V][T][P][S]  currency

 *  VT_DATE             [V][T][P][S]  date

 *  VT_BSTR             [V][T][P][S]  OLE Automation string

 *  VT_DISPATCH         [V][T]   [S]  IDispatch *

 *  VT_ERROR            [V][T][P][S]  SCODE

 *  VT_BOOL             [V][T][P][S]  True=-1, False=0

 *  VT_VARIANT          [V][T][P][S]  VARIANT *

 *  VT_UNKNOWN          [V][T]   [S]  IUnknown *

 *  VT_DECIMAL          [V][T]   [S]  16 byte fixed point

 *  VT_RECORD           [V]   [P][S]  user defined type

 *  VT_I1               [V][T][P][s]  signed char

 *  VT_UI1              [V][T][P][S]  unsigned char

 *  VT_UI2              [V][T][P][S]  unsigned short

 *  VT_UI4              [V][T][P][S]  unsigned long

 *  VT_I8                  [T][P]     signed 64-bit int

 *  VT_UI8                 [T][P]     unsigned 64-bit int

 *  VT_INT              [V][T][P][S]  signed machine int

 *  VT_UINT             [V][T]   [S]  unsigned machine int

 *  VT_INT_PTR             [T]        signed machine register size width

 *  VT_UINT_PTR            [T]        unsigned machine register size width

 *  VT_VOID                [T]        C style void

 *  VT_HRESULT             [T]        Standard return type

 *  VT_PTR                 [T]        pointer type

 *  VT_SAFEARRAY           [T]        (use VT_ARRAY in VARIANT)

 *  VT_CARRAY              [T]        C style array

 *  VT_USERDEFINED         [T]        user defined type

 *  VT_LPSTR               [T][P]     null terminated string

 *  VT_LPWSTR              [T][P]     wide null terminated string

 *  VT_FILETIME               [P]     FILETIME

 *  VT_BLOB                   [P]     Length prefixed bytes

 *  VT_STREAM                 [P]     Name of the stream follows

 *  VT_STORAGE                [P]     Name of the storage follows

 *  VT_STREAMED_OBJECT        [P]     Stream contains an object

 *  VT_STORED_OBJECT          [P]     Storage contains an object

 *  VT_VERSIONED_STREAM       [P]     Stream with a GUID version

 *  VT_BLOB_OBJECT            [P]     Blob contains an object

 *  VT_CF                     [P]     Clipboard format

 *  VT_CLSID                  [P]     A Class ID

 *  VT_VECTOR                 [P]     simple counted array

 *  VT_ARRAY            [V]           SAFEARRAY*

 *  VT_BYREF            [V]           void* for local use

 *  VT_BSTR_BLOB                      Reserved for system use

 */

 

但有些情况不满足,比如VT_DATE代表日期和时间,却没有把日期和时间分开定义。

 

使用ADO对象中的数据类型获得字段的数据类型。

     DataTypeEnum adoType;

     adoType = pRecordset->GetFields()->GetItem( _variant_t( strFieldName ) )->Type;

       DataTypeEnum枚举类型在msado15.tlh中定义。

DataTypeEnum

{

    adEmpty = 0,

    adTinyInt = 16,

    adSmallInt = 2,

    adInteger = 3,

    adBigInt = 20,

    adUnsignedTinyInt = 17,

    adUnsignedSmallInt = 18,

    adUnsignedInt = 19,

    adUnsignedBigInt = 21,

    adSingle = 4,

    adDouble = 5,

    adCurrency = 6,

    adDecimal = 14,

    adNumeric = 131,

    adBoolean = 11,

    adError = 10,

    adUserDefined = 132,

    adVariant = 12,

    adIDispatch = 9,

    adIUnknown = 13,

    adGUID = 72,

    adDate = 7,

    adDBDate = 133,

    adDBTime = 134,

    adDBTimeStamp = 135,

    adBSTR = 8,

    adChar = 129,

    adVarChar = 200,

    adLongVarChar = 201,

    adWChar = 130,

    adVarWChar = 202,

    adLongVarWChar = 203,

    adBinary = 128,

    adVarBinary = 204,

    adLongVarBinary = 205,

    adChapter = 136,

    adFileTime = 64,

    adPropVariant = 138,

    adVarNumeric = 139,

    adArray = 8192

};

 

       可以看到,这里面日期和时间就分开定义了,分别为adDBDateadDBTime

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值