COleVariant类

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

http://topic.csdn.net/t/20010703/09/179360.html

COleVariant 封装了VARIANT。  
   
  m_pUsersSet   =   new   CDaoRecordset(   m_pDB   );  
  strSQL.Format(   _T("select   *   from   [Users]   where   LoginName   =   /'%s/'"),   strLoginName   );  
  m_pUsersSet->Open(   dbOpenDynaset,   strSQL   );  
  m_pUsersSet->GetFieldValue(   _T("Password"),   varValue   );  
  strTemp   =   varValue.bstrVal;                       //   想要啥就选啥,当然不是每中类型都有值   
  

 

http://www.china-askpro.com/msg25/qa11.shtml

实际的数据就在 VARIANT 结构中。
    使用 COleVariant 的两个操作
    operator LPCVARIANT
     Converts a COleVariant value into an LPCVARIANT.
    operator LPVARIANT
     Converts a COleVariant object into an LPVARIANT.
    可以得到 VARIANT 结构。其区别是,前者是个拷贝操作,将 VARIANT 结构的内容拷贝到目标中去,后者仅仅返回
    VARIANT 结构的指针。不管那种情况,现在我们都能访问到 VARIANT 所包含的数据了。余下的问题是如何解释数
    据内容。
    VARIANT 结构包含两部分。其一是 VARTYPE 型的成员变量vt;其二是个联合类型,这个联合包含了VC常用的几乎所有类型。因为联合用的是相同的存储空间,因此对联合的内容的解释依赖于 vt。
    例如,
    若 vt 的值是 VT_UI2, 说明该联合被解释为short int. 并使用成员变量名 iVal。
    若 vt 的的值是 VT_BSTR,说明该联合被解释为 BSTR 类型。并使用成员变量名 bstrVal。
    若 vt 的的值是 VT_BSTR|VT_BYREF,说明该联合被解释为BSTR 型指针。并使用成员变量名 pbstrVal。
    (其他详见 VARIANT 的联机帮助)
    *********************************
    若从数据库返回的是简单类型,如 short, long, 等,则直接引用既可。(主持人注:COleVariant类重载了“=”操作符,所以常用类型可以直接转换)若返回的是字符串类型,则有可能是 bstrVal 或pbstrVal。依赖于数据库服务程序。 BSTR 实际上就是个unicode 字符串,CString 的构造函数和赋值操作都能直接识别这一类型。
    
    AndySun问:
    VARIANT结构的vt成员可以为值VT_DECIMAL,当然,这个值在MSDN的帮助中似乎没有,但在VARIANT定义的源文件中确实有它的定义,它是在wtypes.h文件中定义的。但我不明白怎样将VT_DECIMAL的数据转换成常用的C数据类型,更想知道 VT_DECIMAL中究竟存放的是一个怎样的数据,应怎样将这个数据显示出来。谢谢!
    李海答:你可以使用COleVariant的ChangeType函数(相当于API函数VariantChangeType)将VT_DECIMAL转换为其他常用类型。

此问题由曾侃回答。

COleVariant和CByteArray VC中常用的动态数组 如果是字节就用CByteArray 如果是字就可以用CWordArray 立即下载

相关推荐

MFC之COleVariant

COleVariant本质上是一个枚举,用同一种型来表达不同的子型。如同boost中的variant。  COleVariant是对VARIANT结构的封装。  VARIANT 结构包含两部分。其一是 VARTYPE 型的成员变量vt;其二是个联合型,这个联合包含了VC常用的几乎所有型。因为联合用的是相同的存储空间,因此对联合的内容的解释依赖于 vt。  例如,  若 vt 的...

weixin_30598225的博客 668

COleVariant的转换

1.转为int型 var.ChangeType(VT_I4);   int i=var.intVal;  2. COleVariant数据库常用到的数据型。它可以是字串,整型值,日期等。知道怎样将它转换为CString很有用处。 设有CString A; COleVariant B; 来看看怎样将COleVariant转换为CString: switch(B.vt){

fin86889003的专栏 2145

【温故而知新】C和C++篇外篇:COleVariant

今天在做一个windows平台的小工具顺便熟悉一下windows开发的一些基础知识,在这个过程中,发现了

Workshop of Wenjie.Yin 4925

MFC之COleVariant

COleVariant 本质上是一个枚举,用同一种型来表达不同的子型。如同boost中的variant。 例子 COleVariant var(3.6f); float v = var.fltVal; CString str("testCOleVariant"); COleVariant var2(str); CString cpStr(var2.bstrVal); 例子 CStrin

dreamcs的专栏 2万+

COleVariant与常用基本数据型之间的转换

http://hi.baidu.com/ton666/item/0f52fd430783b9e01381dac5 http://blog.csdn.net/limitedlove/article/details/1648315 VARIANT 结构包含两部分。其一是 VARTYPE 型的成员变量vt;其二是个联合型,这个联合包含了VC常用的几乎所有型。因为联合用的是相同的存储空间,因此对联

bytxl的专栏 3414

转:MFC之COleVariant

COleVariant本质上是一个枚举,用同一种型来表达不同的子型。如同boost中的variant。 例子 [cpp]view plaincopy COleVariantvar(3.6f); floatv=var.fltVal; CStringstr("testCOleVariant"); COleVariantvar2(st...

weixin_30437847的博客 325

BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR、_bstr_t

Visual C++.NET涉及到ATL/ATL Server、MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛。在编程中,我们常常会遇到ANSI、Unicode以及BSTR不同编码 型的字符串转换操作。本文先介绍基本字符串型,然后说明相关的,如CComBSTR、_bstr_t、CStringT等,最后讨论它们的转换方法, 其中还包括使用最新ATL7.0的转换和宏,如CA2CT、

pirate97的专栏 840

VARIANT 、_variant_t 与 COleVariant

_variant_t转化成char* ch;ch = (char*)(_bstr_t)vt; =================================VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。 对于VARIANT变量的赋值:首先给vt成员赋值,指明数据型,再对联合结构中相同数据型的变量赋值,举个例子:...

dizi9750的博客 258

字符串转换系列三:VARIANT、COleVariant 和_variant_t

 VARIANT、COleVariant 和_variant_t   在OLE、ActiveX和COM中,VARIANT数据型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版: struct tagVARIANT {  VARTYPE vt;  

u014023993的专栏 1199

VARIANT、COleVariant 和_variant_t

转至以下链接,转帖是为了自己找着方便。http://blog.csdn.net/Ackarlix/archive/2008/12/29/3640562.aspx  在OLE、ActiveX和COM中,VARIANT数据型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义

aslucky的专栏 532

_variant_t、CComVariant与COleVariant、CDBVariant

目前计算机语言多种多样,如C++、Java、Basic、Pascal等,此外还有JavaScript、VBScript、ActionScript等脚本语言,它们各自维护自己的数据型,当使用C++这样强型的语言来读取数据库或者与其他语言之间来交换数据时,它很有可能不知道获取到的数据的具体型,这个时候必须借助于变体型读取数据。VARIANT数据型就具有跨语言的特性,同时它可以表示(存储)任意

月落满楼 4380

tagVARIANT、VARIANT、_variant_t和COleVariant

  tagVARIANT是一个结构体struct: C++ Code:tagVARIANT 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 ...

weixin_30566063的博客 234

VARIANT、COleVariant 和_variant_

 在OLE、ActiveX和COM中,VARIANT数据型提供了一种非常有效的机制、由于它既包含了数据本身,也包含了数据的型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版: struct tagVARIANT {  VARTYPE vt;  union {   short iVal; // VT_I2.   long lVa

admin19216801的博客 428
上一篇: arp,谁?
下一篇: 开机启动后,只有一个key显示
limitedlove
博客等级 码龄20年 3粉丝 142原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值