使用ADO数据库编程.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《使用ADO数据库编程.doc》由会员分享,可在线阅读,更多相关《使用ADO数据库编程.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 使用ADO数据库编程ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术。ADO非常简单易用,甚至比ODBC API、DAO、RDO都要容易使用,并不失灵活性。本节将讨论如何使用ADO进行数据库的开发,介绍ADO库定义文件,讨论用Connection对象连接数据库、通过Connection、Command对象执行SQL命令及利用Recordset对象取得结果记录集进行查询、处理,下面分别介绍。1.1 导入ADO的动态链接库用#import指令引入ADO类型库,在使用的文件中加入如下语句#import c:
2、program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF)这句话的作用是编译的时候系统会为我们生成msado15.tlh,ado15.tli两个头文件来定义ADO库,即加载ADO动态库(msado15.dll)。其中,no_namespace表明不使用命名空间,rename(EOF,adoEOF)表明把ADO中用到的EOF改为adoEOF,防止发生命名冲突。几点说明:q 该代码需要在一行中完成,如果写成两行或者多行,行末要加上“”符号,表示把这几行看成一行。q 读者的编程环境中msado15.dll
3、不一定在这个目录下,请按实际情况修改。q 在编译的时候可能会出现warningC4146警告,对此微软在MSDN中作了说明,并建议不要理会这个警告。1.2 初始化ADO控件环境ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。初始化OLE/COM库环境的代码如下::CoInitialize(NULL); /*初始化OLE/COM库环境*/别忘了最后要释放资源::CoUninitialize();/*释放程式占用的COM 资源*/如果需要界面支持可以通过另外一个函数实现。if(!AfxOleInit()/*初始化OLE/COM库环境*/ printf(OL
4、E初始化出错!);return 0; 每次应用程序启动时,需要通过函数AfxOleInit()或CoInitialize()实现初始化OLE/COM库环境。本书中相关实例是使用CoInitialize()来完成初始化。1.3 ADO库接口ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。下面分别讨论各接口功能描述及使用方法。1_ConnectionPtr接口_ConnectionPtr是一个连接接口,返回一个记录集或一个空指针。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。通常使用它来创建一个数据连接或执行一
5、条不返回任何结果的SQL语句。初始化COM环境后,创建与数据库的连接最佳方法是声明一个Connection对象指针_ConnectionPtr,并把它用于和Connection对象进行的所以交互中。一旦声明了Connection对象指针,可以通过创建一个Connection对象的实例(调用函数CreateInstance()),并把Connection对象的UUID(接口的ID)作为唯一的参数传给它,从而初始化它。_ConnectionPtr接口执行过程是先创建一个_ConnectionPtr接口实例,接着指向并打开一个ODBC数据源。下面给出使用_ConnectionPtr创建一个基于DSN
6、和非DSN的数据连接的实例。(1)使用_ConnectionPtr基于非DSN数据连接语句。如果没有注册数据源,可直接通过连接字符串实现数据库的连接。分别针对SQL SERVER、ORACLE和Access数据库给出连接字符串的构造实例,读者可直接使用对应的例句。(2)连接SQL SERVER。_ConnectionPtr pCon; /*定义pCon指针*/pCon.CreateInstance(_uuidof(Connection); /*初始化pCon指针*/strConn.=driver=SQL Server; Server=kobe; DATABASE=test; UID=sa; P
7、WD= ;pCon-Open(_bstr_t)strConn, , , adModeUnknown);上述语句中,kobe是服务器名。如果连接本地数据库,可以是“172.0.0.1”或“.”或“localhost”都是可以的。test是数据库名称,SQL SERVER登录的用户名sa和密码为空,这些参数可通过SQL SERVER的企业管理器更改。(3)连接Access。CString strConn;_ConnectionPtr pCon;pCon.CreateInstance(_uuidof(Connection);strConn=driver= Microsoft Access Drive
8、r (*.mdb ; DBQ=E:test.mdb;pCon-Open(_bstr_t)strConn, , , adModeUnknown);上述语句中DBQ是Access数据库的完整路径名。例如,“D:DBtest.mdb”注意描述路径需要有两个反斜杠。(4)使用_ConnectionPtr基于DSN数据连接语句。如果已经有注册的数据源“test”可用另外一种方式连接数据库。_ConnectionPtr pCon;pCon.CreateInstance(_uuidof(Connection);pCon-Open(DSN=test;UID=sa;PWD= ,-1);语句中的UID、PWD分别
9、为SQL SERVER登录的用户名sa和密码为空。2_CommandPtr接口_CommandPtr接口返回一个记录集或一个空指针。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,不仅可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。通常使用它创建一个数据
10、连接,然后使用其它对象执行数据输入输出操作。3_RecordsetPtr接口_RecordsetPtr接口是指向ADO的Recordset对象的指针,它对记录集提供了更多的控制功能。例如,记录锁定,游标控制等实现对记录的插入、删除及更新操作。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。如果需要使用多个记录集,可以与Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。
11、/*基本流程*/(1)初始化COM库,引入ADO库定义文件(2)用Connection对象连接数据库(3)利用建立好的连接,通过Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。(4)使用完毕后关闭连接释放对象。/操作的详细步骤:/*【1】COM库的初始化*/可以使用AfxOleInit()或:CoInitialize(NULL)来初始化COM库,通常在CWinApp:InitInstance()的函数中完成,请看如下代码:BOOL CADOTest1App:InitInstance() AfxOleInit(); . /*【2】用#import指令引
12、入ADO类*/在stdafx.h中加入如下语句:#import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF)其作用同#include类似,编译时系统会生成msado15.tlh,ado15.tli两个C+头文件来定义ADO库。/*【3】创建Connection对象并连接数据库*/首先我们需要添加一个指向Connection对象的指针:_ConnectionPtr m_pConnection;BOOL CADOTest1Dlg:OnInitDialog()CDialog:OnInit
13、Dialog();tryHRESULT hr = m_pConnection.CreateInstance(ADODB.Connection);/创建Connection对象if(SUCCEEDED(hr)hr = m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb,adModeUnknown);/连接数据库/hr = m_pConnection-Open(driver=SQL Server;Server=.;DATABASE=xxx;UID=sa;PWD=,adModeUnknown);catch
14、(_com_error e) /COM错误取得,当执行COM功能的时候,如果出错,可以捕捉到_com_error的异常CString strComError;strComError.Format(错误编号: %08lxn错误信息: %sn错误源: %sn错误描述: %s,e.Error(), / 错误编号e.ErrorMessage(), / 错误信息(LPCSTR) e.Source(), / 错误源(LPCSTR) e.Description(); / 错误描述:MessageBox(NULL,strComError,错误,MB_ICONEXCLAMATION);常用的数据库连接方法:(1
15、)通过JET数据库引擎对ACCESS2000数据库的连接m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:test.mdb,adModeUnknown);(2)通过DSN数据源对任何支持ODBC的数据库进行连接:m_pConnection-Open(Data Source=adotest;UID=sa;PWD=;,adModeUnknown);/m_pConnection-Open(DSN=test;,0); /连接叫作test的ODBC数据源 (3)不通过DSN对SQL SERVER数据库进行连接: m_pCo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 ADO 数据库 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内