ADO之_variant_t 和 _bstr_t
来源:互联网 发布:教育信息化 大数据 编辑:程序博客网 时间:2024/04/29 16:43
BSTR(Basic STRing,Basic字符串)是一个OLECHAR*类型的Unicode字符串。它被描述成一个与自动化相兼容的类型。由于操作系统提供相应的API函数(如SysAllocString)来管理它以及一些默认的调度代码,因此BSTR实际上就是一个COM字符串,但它却在自动化技术以外的多种场合下得到广泛使用。图1描述了BSTR的结构,其中DWORD值是字符串中实际所占用的字节数,且它的值是字符串中Unicode字符的两倍。 在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版: struct tagVARIANT { 显然,VARIANT类型是一个C结构,它包含了一个类型成员vt、一些保留字节以及一个大的union类型。例如,如果vt为VT_I2,那么我们可以从iVal中读出VARIANT的值。同样,当给一个VARIANT变量赋值时,也要先指明其类型。例如: VARIANT va; _variant_t 是一个用于COM的VARIANT类,它的功能与COleVariant相似。不过在Visual C++.NET的MFC应用程序中使用时需要在代码文件前面添加下列两句: #i nclude "comutil.h" #pragma comment( lib, "comsupp.lib" ) _bstr_t是是C++对BSTR的封装,它的构造和析构函数分别调用SysAllocString和SysFreeString函数,其他操作是借用BSTR API函数。与_variant_t相似,使用时也要添加comutil.h和comsupp.lib。 CString转换成BSTR 通常是通过使用CStringT::AllocSysString来实现。例如: CString str("This is a test");
一般可按下列方法进行: BSTR bstrText = ::SysAllocString(L"Test"); 关于数据类型转换由于COM对象是跨平台的,它使用了一种通用的方法来处理各种类型的数据,因此Cstring 类和COM对象是不兼容的,我们需要一组API来转换COM对象和C++类型的数据。_vatiant_t和_bstr_t就是这样两种对象。它们提供了通用的方法转换COM对象和C++类型的数据。 |
- ADO之_variant_t 和 _bstr_t
- ADO 数据类型_bstr_t 和_variant_t
- MFC ADO数据库编程中的_variant_t和_bstr_t
- VC++通过ADO连接数据库(三)_variant_t和_bstr_t
- MFC ADO数据库编程中的_variant_t和_bstr_t类型
- _variant_t和_bstr_t
- _bstr_t 和_variant_t
- _bstr_t和_variant_t
- 关于_bstr_t和 _variant_t
- _variant_t _bstr_t
- _variant_t _bstr_t
- _variant_t和_bstr_t有什么区别
- BSTR、_bstr_t _variant_t与 CComBSTR
- BSTR、_bstr_t 与 CComBSTR _variant_t
- _variant_t ,_bstr_t, CString 类,BSTR
- _variant_t ,_bstr_t 与 CString 类区别
- ADO 中 _variant_t 类型转换
- _variant_t ,_bstr_t 与 CString 类有什么区别
- 一个access数据库的日期提醒代码
- MIDlet中的platform函数
- Flex与JavaScript的交互:调用JavaScipt或者被JavaScript调用
- MFC 中的停靠栏
- SVN命令及使用
- ADO之_variant_t 和 _bstr_t
- [译]连接池和 "Timeout expired"异常
- GGB0 GGB1
- JAVA学习提高之----MyEclipse下配置Tomcat过程
- CSS Tab Designer介绍
- 年末总结
- Debian添加源(source.list)及无线网卡配置(wireless tools)
- 免装oracle客户端使用PLSQL连上oracle服务器
- 右击选择“在浏览器中查看”的选项配置