友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VC语言6.0程序设计从入门到精通-第97章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




    o  Value 属性是包含属性设置的变体型;  

    o  Attributes 属性是指示特定于提供者属性特征的长整型值。  



    4 .错误对象  



    Error 对象用于获得连接对象所发生的详细错误信息,它的主要属性如表 12…12 所示。  



    表 12…12                     错误对象的属性及其说明  



        属性                                       说明  

 Description        获得错误的简要说明  

 NativeError        获得对特殊的 Error 对象检索特定数据库的错误信息  

 Number             确定发生错误的类型,该属性的值是与错误条件对应的惟一数字  

 Source             确定产生错误的原始对象或应用程序的名称,该名称可以是对象的类名或编程 ID  

 SQLState           读取由提供者在处理 SQL 语句过程中出现错误时返回的 5 个字符的错误代码  



12。5。5    集合  



    ADO 有 4 个集合,分别是域集合 Fields 、参数集合 Parameters 、属性集合 Properties  以及 

错误集合 Errors 。  



    1.域集合  



    Fields  集合包含 Recordset  对象的所有 Field  对象,它的常用方法和属性分别如表  12…13 

和表 12…14 所示。  



    表 12…13                      域集合的方法及其说明  



        方法                                       说明  

 Append             添加新的 Field 对象到 Fields 集合中  

 Delete             从 Fields 集合中删除 Field 对象  

 Refresh            更新 Fields 集合中的 Field 对象  

 Item               返回 Fields 集合中的 Field 对象  



    表 12…14                      域集合的属性及其说明  



       属性                                        说明  

 Count              确定给定 Fields 集合中 Field 对象的数目  



    2 .参数集合  



    Parameters 集合包含 mand 对象的所有 Parameter 对象,它的常用方法和属性分别如 

表 12…15 和表 12…16 所示。  

      

      



                                                                              ·349 ·  


…………………………………………………………Page 361……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



     表 12…15                      参数集合的方法及其说明  



        方法                                          说明  

 Append              添加新的 Parameter 对象到 Parameters 集合中  

 Delete              从 Parameters 集合中删除 Parameter 对象  

 Refresh             更新 Parameters 集合中的 Parameter 对象  

 Item                返回 Parameters 集合中的 Parameter 对象  



     表 12…16                      参数集合的属性及其说明  



        属性                                          说明  

 Count               确定给定 Parameters 集合中 Parameter 对象的数目  



     3 .属性集合  



    Properties 集合包含特定对象实例的所有  Property               对象,它的常用方法和属性分别如表 

12…17 和表 12…18 所示。  



     表 12…17                      属性集合的方法及其说明  



        方法                                          说明  

 Refresh             更新 Properties 集合中的 Property 对象  

 Item                返回 Properties 集合中的 Property 对象  



     表 12…18                      属性集合的属性及其说明  



        属性                                          说明  

 Count               确定给定 Properties 集合中 Property 对象的数目  



    4 .错误集合  



    Errors 集合包含为响应涉及提供者的单个错误而创建的所有 Error 对象,它的常用方法和 

属性分别如表 12…19 和表 12…20 所示。  



     表 12…19                      错误集合的方法及其说明  



        方法                                          说明  

                     清空 Errors 集合中的全部 Error 对象,发生错误时,ADO 会自动清空 Errors 集合, 

 Clear  

                     并用新的 Error 对象填充 Errors 集合  

 Item                返回 Errors 集合中的 Error 对象  



     表 12…20                      错误集合的属性及其说明  



        属性                                          属性  

 Count               确定给定 Errors 集合中 Error 对象的数目  



12。6    数据库操作  



     本节将给出一个具体的利用 ADO 技术操作数据库的实例,通过这个实例,读者对 ADO 

技术会有更进一步的了解。  

      

      



 ·350 ·  


…………………………………………………………Page 362……………………………………………………………

                                                                  第 12 章    数据库开发  



12。6。1    动态链接库的引入和 OLE/ 库的初始化  



    利用 ADO 技术编写程序,首先要告诉编译器去什么地方找 ADO 的库文件,通常这个文 

件在 c:program  filesmon  filessystemado 下,文件名为 msado15。dll 。因此,第一步应该 

在文件“stdafx。h ”的开头加上如下语句:  



    #import 〃c:program filesmon filessystemadomsado15。dll〃 no_namespace rename(〃EOF〃; 〃adoEOF〃)  



    使用 no_namespace 意味着程序员不需要在初始化变量的时候引用名字空间,最后的操作 

表明将 EOF 更名为 adoEOF,如果不这样做,在程序中很可能会碰到常量冲突。  

    将 ADO 的动态链接库引入后,在正式用 ADO 编写程序前,还需要对 OLE/ 库初始 

化,代码如下:  



    CoInitialize( NULL );  



12。6。2    ADO 与数据库的连接  



    引入 ADO 库并初始化 OLE/ 后,接下来要进行 ADO 与数据库的连接。  

    ADO   与数据库连接时,有一个最重要的数据类型,即_ConnectionPtr ,它实际上就是由 

类模板__ptr_t  而得到的一个具体的实例类。_ConnectionPtr  类封装了 Connection  对象的 

Idispatch 接口指针,及一些必要的操作,通过这个指针便可以操纵 Connection 对象。通常的 

连接实现方式如下:  



    _ConnectionPtr  conn;  



    conn。CreateInstance(__uuidof(Connection));  



    conn…》Open(BSTR ConnectionString; BSTR UserID; BSTR Password; long Options);  



    各参数意义如下:  

    o  ConnectionString :最关键的参数,它表明了要连接的数据源,在本章中采用的是 Access 

      数据库,它的格式一般为:  〃Provider=Microsoft。Jet。OLEDB。4。0;Data  Source=db。mdb〃, 

      至于其他数据库,请读者参考相关资料;此外,ConnectionString 还可以是数据源的名 

      字。  

    o  UserID :用户名,如果 ConnectionString 中已经包含,则可以为空。  

    o  Password :密码,如果 ConnectionString 中已经包含,则可以为空。  

    o  Options :表示是以同步方式(adConnectUnspecified)还是以异步方式(adAsyncConnect) 

      进行连接,默认为同步。  

    具体的,有以下两种实现连接的方式:  



    (1)LPCSTR strConnect = 〃Provider=Microsoft。Jet。OLEDB。4。0;Data Source=test。mdb〃;  



    conn…》Open(strConnect; 〃〃; 〃〃; adConnectUnspecified);  



    (2 )conn…》Open(〃DSN=DataSourceName〃; 〃〃; 〃〃; adConnectUnspecified);  



    对于本章的例子,要连接的数据库就是在第 2 节创建的数据库 Info。mdb                            (数据源也在第 

2 节已经设置好),则连接语句如下:  



    _ConnectionPtr m_connection;  



    //创建实例  



    m_connection。CreateInstance(__uuidof(Connection) );  



                                                                             ·351 ·  


…………………………………………………………Page 363……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



    //根据连接字符串开启数据连接  



    m_connection…》Open( 〃DSN=Information〃; 〃〃; 〃〃; …1);  



12。6。3    获得和遍历记录集  



    建立连接后,便可以创建一个                 ADO   记录集。在得到记录集之前,需要先声明一个 

_RecordsetPtr 型变量,然后创建记录集的实例:  



    _Recordset m_Recordset;  



    //创建实例  



    m_Recordset。CreateInstance(__uuidof(Recordset));  



    这里_RecordsetPtr  的来历类似于_ConnectionPtr ,也是由类模板__ptr_t 而得到的一个 

具体的实例类。  

    一般说来,打开记录集有 3 种方式。  



     1.利用 Connection 对象的 Execute()方法执行 SQL 命令  



    Execute()方法的原型如下:  



    Execute (_bstr_t mandText; VARIANT* RecordsAffected; long Options)  



    各参数意义如下:  

    o  mandText :命令字串,通常是 SQL 语句。  

    o  RecordsAffected :操作完成后影响的行数。  

    o  Options :mandText  中内容的类型。取值为 adCmdText  表明是文本命令;取值为 

      adCmdTable 表明是一个表名;取值为 adCmdProc 表明是一个存储过程。  

    假设    m_Connection 和   m_Recordset 分别是创建好的连接对象和记录集对象,则利用 

Connection 对象的 Execute()方法打开记录集代码如下:  



    _variant RecordsAffected;  



    m_Connection…》Execute(“select * from Contact”; &RecordsAffected; adCmdText);  



    2 .利用 mand 对象执行
返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!