subject_20930.htm
来自「一些关于vc的问答」· HTM 代码 · 共 18 行
HTM
18 行
<p>
序号:20930 发表者:焉蓝 发表日期:2002-11-12 11:23:43
<br>主题:大侠,请教一个ado的简单问题
<br>内容:请教_variant_t,_bstr_t的具体概念,为什么用它们,不用以前的类型!谢谢!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:啊志 回复日期:2002-11-12 11:54:35
<br>内容:_variant_t是一种变体类型,用于com组件和vc的数据传递。ado是一种com,所以我们学ado就要学习使用它<BR><BR>_bstr_t其实就是一种字符串类型
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐强军 回复日期:2002-11-13 20:14:18
<br>内容: ADO是一种COM组件,_variant_t出现用以促成包含编程者定义的程序函数的标准接口的创建,特别是,variant类型用于IDispatch接口中。<BR> IDispatch接口并不是variant类型的唯一受益者,该类型用在许多接口方法中,这些方法一定返回一个值,而该值可以是几种不同类型之一。ADO或OLE的DB接口中的方法存在着函数用于返回来自数据库查询结果的域值。由于一个域的值可以是任何多种不同的类型,所以当定义一个通用方法以恢复该域值时就出现了问题。解决的方法是返回一个variant类型,由于variant类型含有一个指示当前类型的标记,因此客户端代码可以通过检查这个标记以发现这个域的类型。作为一种替代方法,客户端可以使用VariantChangeTye函数区迫使该类型转换为应用程序所需类型。一个variant类型的基本结构可一定义如下:<BR> typedef struct tagVARIANT{<BR> VARTYPE vt;<BR> unsigned short wReserved1;<BR> unsigned short wReserved2;<BR> unsigned short wReserved3;<BR><BR> union{<BR> unsigned char bVal;<BR> short iVal;<BR> long lVal;<BR> float fltVal;<BR> double dblVal;<BR> CY cyVal;<BR> DATE date;<BR> BSTR bstrVal;<BR> IUnknown FAR * punkVal;<BR> void FAR * byref;<BR> .......<BR> };<BR> };<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?