📄 天极yesky - 全球中文it第一门户 - 软件 - vc++程序员如何阅读ado文档.htm
字号:
<TBODY>
<TR>
<TD vAlign=bottom align=right width=100>
<SCRIPT language=JavaScript>function check(){ if(sform.iftitle.value==1) { sform.title.value=sform.query.value; }else { sform.content.value=sform.query.value; }}</SCRIPT>
<INPUT type=hidden value=wst name=tn></INPUT><INPUT
type=hidden value=1 name=relative></INPUT><INPUT type=hidden
value=1 name=smart_abstract></INPUT><INPUT type=hidden
value="Last-Modified DESC" name=sort></INPUT><INPUT
type=hidden name=title></INPUT><INPUT type=hidden
name=content></INPUT><INPUT type=hidden value=10
name=rn></INPUT><INPUT type=hidden value=1
name=thesaurus></INPUT><INPUT type=hidden
name=ch_id></INPUT><INPUT maxLength=120 size=12
name=query></INPUT><SELECT name=iftitle><OPTION value=0
selected checked="yes">全文检索</OPTION><OPTION
value=1>标题检索</OPTION></SELECT></TD>
<TD width=49><INPUT type=image alt=开始检索
src="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-04.gif"
align=bottom border=0
name=image></INPUT></TD></TR></FORM></TBODY></TABLE></TD>
<TD width=1 bgColor=#698096></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=151 border=0>
<TBODY>
<TR>
<TD bgColor=#698096 height=1></TD></TR></TBODY></TABLE><IMG height=3
src="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-13.gif" width=3
align=top></IMG></TD>
<TD width=10 bgColor=#f7f7f7></TD>
<TD vAlign=top width=464 bgColor=#f7f7f7>您的位置是: <A
href="http://www.yesky.com/SoftChannel/72339069014638592/index.shtml">软件</A>
> <A
href="http://www.yesky.com/SoftChannel/72342367549521920/index.shtml">开发者网络</A>
> <A
href="http://www.yesky.com/SoftChannel/72342371844489216/index.shtml">开发工具</A>
> <A
href="http://www.yesky.com/SoftChannel/72342371928375296/index.shtml">开发专栏</A>
> <A
href="http://www.yesky.com/SoftChannel/72342371928702976/index.shtml">VC专栏</A>
> 正文 <IMG height=10
src="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-13.gif"
width=10></IMG><A href="http://www.cseek.com/">查cseek报价</A><BR><BR><FONT
class=f22><B>VC++程序员如何阅读ADO文档</B></FONT><BR>2003-10-21<FONT
color=#f7f7f7>■</FONT>CANDY<FONT color=#f7f7f7>■</FONT>论坛</TD>
<TD vAlign=bottom width=130 bgColor=#f7f7f7>
<TABLE cellSpacing=0 cellPadding=0 width=130 border=0>
<TBODY>
<TR>
<TD align=right width=96><A href="javascript:sendemail()"><FONT
color=#ff5d00>我对此感兴趣</FONT></A></TD>
<TD width=34><IMG height=22
src="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-17.gif"
width=22></IMG></TD></TR>
<TR>
<TD align=right width=96><A
href="http://211.167.73.173/mail/index.htm"><FONT
color=#8c8a8a>订阅电子杂志</FONT></A></TD>
<TD width=34><IMG height=22
src="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-18.gif"
width=19></IMG></TD></TR>
<TR>
<TD align=right width=96>
<SCRIPT language=JavaScript>function bbs(){ OpenWindow = window.open('http://bbs.yesky.com/yeskybbs.asp?body=VC++程序员如何阅读ADO文档&bbsid=9&url=http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617.shtml&aid=1737617','bbs','')}</SCRIPT>
<A href="javascript:bbs()"><FONT color=#8c8a8a>发表评论</FONT></A></TD>
<TD width=34><IMG height=22
src="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-19.gif"
width=21></IMG></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=775 bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD width=8 bgColor=#7b91a9></TD>
<TD width=1 bgColor=#000000></TD>
<TD vAlign=top align=middle width=163>
<TABLE cellSpacing=0 cellPadding=0 width=163
background="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-20.gif"
border=0>
<TBODY>
<TR>
<TD width=20></TD>
<TD width=143><FONT
color=#ffffff>advertisement</FONT></TD></TR></TBODY></TABLE><IFRAME
src="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/y-software-skyscraper.htm"
frameBorder=0 width=160 scrolling=no height=500></IFRAME>
<TABLE cellSpacing=0 cellPadding=0 width=163
background="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-20.gif"
border=0>
<TBODY>
<TR>
<TD width=20></TD>
<TD width=143 height=28><FONT
color=#ffffff>热点推荐</FONT></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=155 border=0>
<TBODY>
<TR>
<TD><A
href="http://www.yesky.com/SoftChannel/72347899534508032/20031019/1737162.shtml"
target=_blank>全能网管之网吧常用Windows下工具</A><BR><A
href="http://www.yesky.com/SoftChannel/72347882287529984/20031018/1737119.shtml"
target=_blank>ACDSee6.0试用手记</A><BR><A
href="http://www.yesky.com/SoftChannel/72348981799157760/20031016/1736594.shtml"
target=_blank>深入了解安全技术</A><BR><A
href="http://www.yesky.com/SoftChannel/72348990389092352/20031015/1736179.shtml"
target=_blank>Dreamweaver MX 2004新功能试用</A><BR><A
href="http://www.yesky.com/SoftChannel/72342371928637440/20031014/1735874.shtml"
target=_blank>Visual Basic通用报表设计小结</A><BR><A
href="http://www.yesky.com/SoftChannel/72348986094125056/20030924/1731488.shtml"
target=_blank>设计教程节日大礼包</A><BR></TD></TR></TBODY></TABLE></TD>
<TD width=13 bgColor=#f7f7f7></TD>
<TD vAlign=top width=580 bgColor=#f7f7f7>
<TABLE height=1 cellSpacing=0 cellPadding=0 width=580
background="天极Yesky - 全球中文IT第一门户 - 软件 - VC++程序员如何阅读ADO文档.files/03-06.gif"
border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE>
<P align=right><FONT color=red><A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_5.shtml">上一页</A> <A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617.shtml">1</A>
<A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_1.shtml">2</A>
<A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_2.shtml">3</A>
<A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_3.shtml">4</A>
<A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_4.shtml">5</A>
<A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_5.shtml">6</A>
7 <A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_7.shtml">8</A>
<A
href="http://www.yesky.com/SoftChannel/72342371928702976/20031021/1737617_7.shtml">下一页</A></FONT></P><BR><SPAN
class=f14> <B>如何使用VC++对ADO的扩展</B><BR><BR> IADORecordBinding接口<BR><BR> VC++对ADO的扩展联系或绑定了一个Recordset对象的各个字段到C/C++变量。当被绑定的Recordset的当前行改变时,其中所有被绑定的字段的值也同样会被拷贝到相应的C/C++变量中。如果需要,被拷贝的数据还会自动进行相应的数据类型转换。<BR><BR> IADORecordBinding接口的BindToRecordset方法将字段绑定到C/C++变量之上。AddNew方法则是增加一个新的行到被绑定的Recordset。Update方法利用C/C++变量的值填充Recordset中新的行或更新已存在的行。<BR>IADORecordBinding接口由Recordset对象实现,你不需要自己编码进行实现。<BR><BR> 绑定条目<BR><BR> VC++对ADO的扩展在一个Recordset对象与一个C/C++变量间进行映像(Map)。一个字段与对应的一个变量间的映像被称作一个绑定条目。预定义的宏为数字、定长或不定长数据提供了绑定条目。所有的绑定条目与相应的C/C++变量都被封装、声明在一个从VC++扩展类CADORecordBinding派生的类中。这个CADORecordBinding类在内部由绑定条目宏定义。<BR><BR> 在ADO内部,将所有宏的参数都映射在一个OLE
DB DBBINDING结构中,并创建一个OLE DB访问子(Accessor)对象来管理所有的行为和字段与变量间的数据转换。OLE
DB定义的数据由以下三部分组成:存储数据的缓冲区;一个状态值表示一个字段是否被成功地被存入缓冲区,或变量值是否被成功地存入字段;数据长度。(参见OLE
DB程序员参考第6章:读写数据的更多信息)<BR><BR> 所需的头文件<BR><BR> 为了使用VC++对ADO的扩展,你得在你的应用中包含这个头文件:#include
<icrsint.h><BR><BR> 绑定Recordset的字段<BR><BR> 要绑定Recordset的字段到C/C++变量,需要这样做:
<BR><BR> 1.创建一个CADORecordsetBinding的派生类。<BR><BR> 2.在派生类中定义绑定条目和相应的C/C++变量。注意不要使用逗号、分号切断宏。每个宏都会自动地定义适当的分隔符。<BR><BR> 为每个被映像的字段定义一个绑定条目。并注意根据不同情况选用ADO_FIXED_LENGTH_ENTRY、
ADO_NUMERIC_ENTRY、ADO_VARIABLE_LENGTH_ENTRY中的某个宏。<BR><BR> 3.在你的应用中,创建一个该派生类的实例。从Recordset中获得IADORecordBinding接口,然后调用BindToRecordset方法将Recordset的所有字段绑定到对应的C/C++变量之上。<BR><BR> 请参见示例程序以获得更多信息。<BR><BR> 接口方法<BR><BR> IADORecordBinding接口只有三个方法:BindToRecordset,
AddNew,和Update。每个方法所需的唯一的参数就是一个CADORecordBinding派生类的实例指针。因此,AddNew和Update方法不能使用任何与它们同名的ADO方法中的参数。<BR><BR> 语法<BR><BR> BindToRecordset方法将字段绑定到C/C++变量之上。<BR><BR>BindToRecordset(CADORecordBinding
*binding)<BR><BR> AddNew方法则引用了它的同名ADO函数,来增加一个新的记录行。<BR><BR>AddNew(CADORecordBinding
*binding)<BR><BR> Update方法也引用了它的同名ADO函数,来更新Recordset。<BR><BR>Update(CADORecordBinding
*binding)<BR><BR> 绑定条目宏<BR><BR> 绑定条目宏定义了一个Recordset字段与一个变量间的对应关系。每个条目的绑定宏由开始宏与结束宏组成并配对使用。<BR><BR> 定长数据的宏适用于adDate,adBoolean等,数字的宏适用于adTinyInt,
adInteger和adDouble等,变长数据的宏适用于adChar,
adVarChar和adVarBinary等。所有的数字类型,除了adVarNumeric以外也是定长数据类型。每个宏的族之间都有不同的参数组,因此你可以排除不感兴趣的绑定信息。<BR><BR> 参见OLE
DB程序员参考附录A:数据类型的更多信息<BR><BR> 开始绑定条目<BR><BR>BEGIN_ADO_BINDING(Class)<BR><BR> 定长数据:<BR><BR>ADO_FIXED_LENGTH_ENTRY(Ordinal,
DataType, Buffer, Status, Modify)<BR>ADO_FIXED_LENGTH_ENTRY2(Ordinal,
DataType, Buffer,
Modify)<BR><BR> 数字型数据:<BR><BR>ADO_NUMERIC_ENTRY(Ordinal, DataType,
Buffer, Precision, Scale, Status, Modify)<BR>ADO_NUMERIC_ENTRY2(Ordinal,
DataType, Buffer, Precision, Scale, Modify)<BR><BR> 变长数据:
<BR><BR>ADO_VARIABLE_LENGTH_ENTRY(Ordinal, DataType, Buffer, Size, Status,
Length, Modify)<BR>ADO_VARIABLE_LENGTH_ENTRY2(Ordinal, DataType, Buffer,
Size, Status, Modify)<BR>ADO_VARIABLE_LENGTH_ENTRY3(Ordinal, DataType,
Buffer, Size, Length, Modify)<BR>ADO_VARIABLE_LENGTH_ENTRY4(Ordinal,
DataType, Buffer, Size,
Modify)<BR><BR> 结束绑定<BR><BR>END_ADO_BINDING()<BR><BR>
<TABLE cellSpacing=0 width="100%" border=1>
<TBODY>
<TR>
<TD width="15%">参数</TD>
<TD width="85%">描述</TD></TR>
<TR>
<TD width="15%">Class</TD>
<TD width="85%">派生类的名字。</TD></TR>
<TR>
<TD width="15%">Ordinal</TD>
<TD width="85%">从1开始的序号,对应于Recordset中的字段。</TD></TR>
<TR>
<TD width="15%">DataType</TD>
<TD
width="85%">与C/C++变量对应的ADO数据类型(参见DataTypeEnum以获得有效数据类型的列表)。如果需要,字段的值会被转换成该类型的值。</TD></TR>
<TR>
<TD width="15%">Buffer</TD>
<TD width="85%">对应的C/C++变量的名字。</TD></TR>
<TR>
<TD width="15%">Size</TD>
<TD width="85%">该C/C++变量的最大字节数。如果是个变长字符串,使用0表示即可。</TD></TR>
<TR>
<TD width="15%">Status </TD>
<TD
width="85%">指示变量的名字。该变量用以表示缓冲是否有效,数据转换是否成功。值adFldOK意味着转换成功;adFldNull意味着该字段的值为空。其他可能的值见后面的状态值列表。</TD></TR>
<TR>
<TD width="15%">Modify</TD>
<TD
width="85%">逻辑标志。TRUE意味着ADO允许利用变量值更新Recordset中的字段的值。设置该值为TRUE将允许更新,如果你只想检查字段的值而不想改变它那么就设置为FALSE。</TD></TR>
<TR>
<TD width="15%">Precision</TD>
<TD width="85%">数字型变量的位数。</TD></TR>
<TR>
<TD width="15%">Scale</TD>
<TD width="85%">数字型变量的小数位数。</TD></TR>
<TR>
<TD width="15%">Length</TD>
<TD
width="85%">一个4字节变量的名字。该变量将包含缓冲区中数据的实际长度。</TD></TR></TBODY></TABLE><BR> 状态值<BR><BR> 变量Status的值指示了一个字段的值是否被成功的拷贝到了对应的变量中。写数据时,可以给Status赋值为adFldNull来指示该字段将被设置为null。<BR><BR>
<TABLE cellSpacing=0 width="100%" border=1>
<TBODY>
<TR>
<TD width="29%">常量 </TD>
<TD width="5%">值</TD>
<TD width="66%">描述</TD></TR>
<TR>
<TD width="29%">adFldOK</TD>
<TD width="5%">0 </TD>
<TD width="66%">一个非空的字段值被返回。</TD></TR>
<TR>
<TD width="29%">adFldBadAccessor </TD>
<TD width="5%">1 </TD>
<TD width="66%">绑定无效。</TD></TR>
<TR>
<TD width="29%">adFldCantConvertValue</TD>
<TD width="5%">2 </TD>
<TD width="66%">值因为符号不匹配或超界外的原因导致无法被正确转换。</TD></TR>
<TR>
<TD width="29%">adFldNull </TD>
<TD width="5%">3 </TD>
<TD width="66%">读字段值时,指示一个空值被返回。写字段值时,指示当字段自身无法编码NULL时该字段将被设置为NULL。
</TD></TR>
<TR>
<TD width="29%">adFldTruncated </TD>
<TD width="5%">4 </TD>
<TD width="66%">变长数据或数字被截断。</TD></TR>
<TR>
<TD width="29%">adFldSignMismatch </TD>
<TD width="5%">5 </TD>
<TD width="66%">值是有符号数,而数据类型是无符号数。</TD></TR>
<TR>
<TD width="29%">adFldDataOverFlow </TD>
<TD width="5%">6 </TD>
<TD width="66%">数据值超出界限。</TD></TR>
<TR>
<TD width="29%">adFldCantCreate </TD>
<TD width="5%">7 </TD>
<TD width="66%">不知名的列类型和字段已经被打开。</TD></TR>
<TR>
<TD width="29%">adFldUnavailable</TD>
<TD width="5%">8 </TD>
<TD width="66%">字段值无法确定。比如一个新的未赋值的无缺省值的字段。</TD></TR>
<TR>
<TD width="29%">adFldPermissionDenied </TD>
<TD width="5%">9 </TD>
<TD width="66%">未被允许更新数据。</TD></TR>
<TR>
<TD width="29%">adFldIntegrityViolation </TD>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -