如题/谢谢

解决方案 »

  1.   

    COleVariant 类通逢装了 VARIANT 结构。实际的数据就在 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 的构造函数和赋值操作都能直接识别这一类型。 
      

  2.   

    CString str=(LPCTSTR)(_bstr_t)YourVariant;
      

  3.   

    还有一种方法,CString str=(LPCSTR)variant.bstrVal;