C++课程设计(论文)封装Ado访问数据库方法的类.doc

上传人:仙人指路1688 文档编号:2384529 上传时间:2023-02-17 格式:DOC 页数:11 大小:37.50KB
返回 下载 相关 举报
C++课程设计(论文)封装Ado访问数据库方法的类.doc_第1页
第1页 / 共11页
C++课程设计(论文)封装Ado访问数据库方法的类.doc_第2页
第2页 / 共11页
C++课程设计(论文)封装Ado访问数据库方法的类.doc_第3页
第3页 / 共11页
C++课程设计(论文)封装Ado访问数据库方法的类.doc_第4页
第4页 / 共11页
C++课程设计(论文)封装Ado访问数据库方法的类.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《C++课程设计(论文)封装Ado访问数据库方法的类.doc》由会员分享,可在线阅读,更多相关《C++课程设计(论文)封装Ado访问数据库方法的类.doc(11页珍藏版)》请在三一办公上搜索。

1、重庆科技学院Visual C+论文院(系):电气与信息工程学院 班 级: 计科应 08 学生姓名: 学 号: 论文题目:封装Ado访问数据库方法的类 _完成日期: 2011 年 5月25 日 指导教师评语: _ 成绩(五级记分制):_ _ 教师签名:_封装Ado访问数据库方法的类摘要:VC+提供了多种访问数据库的接口,ADO是目前在Windows环境中比较流行的客户端数据库访问技术。使用封装方法和源程序实现VC+下尝试ADO访问数据库类,使其更方便地使用现有的VC的数据类型,简化应用程序书写的逻辑,增加程序的可读性。在程序中通过ADO的Connection和Recordset对象可以建立与数据

2、库的连接,并读写数据库中的数据。关键词:VC+ ADO 数据库1、ADO概述 ADO是Microsoft为最新和最强大的数据访问范例OLE DB而设计的,是一个便于使用的应用程序接口。ADO 使您能够编写应用程序以通过 OLE.DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。ADO 在关键的应用方案中使用最少的网络流量,并且在前端 和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性 能的接口。OLE DB是一组”组件对象模型”(COM) 接口,是新的数据库 低层接口,它封装了ODBC的功能,并以统一的方式访问存储 在不同信息源

3、中的数据。OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。OLE DB 为任何数据源提供了高 性能的访问,这些数据源包括关系和非关系数据库、电子邮件 和文件系统、文本和图形、自定义业务对象等等。也就是说OLE DB 并不局限于 ISAM、Jet 甚至关系数据源,它能够处理 任何类型的数据,而不考虑它们的格式和存储方法。在实际应用中,这种多样性意味着可以访问驻留在 Excel 电子数据表、 文本文件、电子邮件/目录服务甚至邮件服务器,诸如 Microsoft Exchange 中的数据。但是,OLE DB 应用程序编程接口的目的是为各种应用程

4、 序提供最佳的功能,它并不符合简单化的要求。您需要的 API 应该是一座连接应用程序和 OLE DB 的桥梁,这就是 ActiveX Data Objects (ADO)。2、ADO对象与编程环境2.1 ADO对象ADO数据库接口是基于对象的集合,ADO对象包括Connection对象、Command对象、Recordset对象、Field对象、Parameter对象、Property对象和Error对象等,其中Connection、Command和Recordset三个对象是主体对象,它们可以被独立创建和释放。Connection对象用来建立和维护与数据源的连接,对数据源的任何操作都需要一个

5、Connection对象。Recordset对象包含执行数据库操作后返回的一个记录集,通过该对象可以浏览和更新数据库中保存的记录。在VC应用程序中,我们需要使用Connection对象建立与数据源的连接,然后通过Recordset对象就可以对结果记录集进行浏览、更新等操作。2.2 ADO编程环境在VC+程序中使用ADO对象,首先需要导入ADO动态链接库。引入动态链接库文件的方法是在创建的VC工程的stdafx.h头文件中添加如下代码:#import “C:Program FilesCommon FilesSystemadom asdo15.dkk”no_nam espace rename(“E

6、OF”,“adoEOF”)根据Windowns操作系统版本不同动态链接库文件可能是msado10.dll、msado15.dll或msado20.dll。在验证时可以根据自己的实际情况进行修改。在以上的代码中,no_namespace表示不使用ADO的命名空间,rename(“EOF”,”adoEOF”)是为了避免冲突,将符号常量表示EOF改名为adoEOF。行尾添加的“”符号在C+中为续行符,表示将两行视为一行。一般在VC工程应用类的InitInstance()成员函数中添加如下初始化COM库环境的代码,在结束对ADO对象的使用后,需要释放程序占用的COM资源。一般是在VC工程应用类的Exi

7、tInstance()成员函数中添加释放COM资源代码。3、建立ADO封装类3.1 ADO对象基本模型ADO模型包含了连接对象、命令对象、域对象、参数对象、记录集对象、错误对象等。在VC中使用ADO访问数据库基本过程是:初始化COM库,引入ADO库文件用Connection对象连接数据库利用建立好的连接,通过利用Recordset对象取得结果记录集进行查询、处理。使用完毕后关闭连接释放对象3.2基本操作函数和数据结构封装的ADO类应包括以下函数和数据结构:1)建立数据库连接函数OpenDataBase()ADO连接数据库首先要用到Connection对象,它是到数据库的物理连接,管理着应用程序

8、和数据库之间的通讯。对于大多数的数据库系统,每一 个物理连接都需要耗费大量系统内存,是宝贵的系统资源,不可滥用。考虑到应用程序的效率,每一个数据库客户端都只用一个物理连接,并且应用程序结束后应该 释放。2)关闭数据库连接函数CloseDataBase()3)SQL查询语句函数 Select()记录集的建立和查询结果得获取是影响应用程序得效率得关键问题。由于每一次查询结果都可能不一样,所以每个查询语句都要建立一个记录集对象。4)执行无返回结果的SQL语句函数Excute()5)查询结果数组pData为了数据类型转换的方便,我们将记录集数据类型都转换为CString类型,存放在查询结果数组pDat

9、a中,由于C+的CString是一个高效和功能强大的类,我们可以很方便地读取记录集中的查询结果。6)结果数组大小nResultRow和nResultCol4、使用ADO封装类建立了ADO封装类后,使用数据库操作就非常简单了。在需使用数据库查询的CPP文件中包含ADO封装类头文件ADODB.H,然后定义一个 CADODB类指针;接下来就是打开数据库连接。使用封装类的成员函数OpenDataBase(),输入要连接的数据库的DSN名称、用户名和密码, 就与数据库建立连接了。要注意的是如果同时连接多个数据库就要声明多个CADODB对象指针,保证数据库连接对象是全局且惟一。接下来就是,调用成员函数 S

10、elect取得数据库查询结果,执行完毕后查询结果放在CADODB的成员字符数组指针pData中,数组大小可以从成员变量nResultRow和 nResultCol中得出。基本步骤如下:在stdafx.h中加入ADO库的导入语句#import c:program filescommon filessystemadomsado15.dll no_namespace rename(EOF,adoEOF) 在应用程序类中初始化COM对象,在InitInstance()中加入以下语句AfxOleInit(); 加入封装类的声明文件#include ADODB.H 定义封装类对象CADODB ADO1;

11、/连接数据库1CADODB ADO2; /连接数据库2ADO1.OpenDataBase(数据源名称,用户ID,用户密码) /建立连接,第一次连接时调用ADO1.Select(select * from 表名); /执行SQL查询语句int nRow= ADO1.GetResultRow(); /取得记录行数int nCol= ADO1.GetResultCol(); /取得记录列数for(i=0;inRow;i+) /取得查询结果for(j=0;jOpen (“Provider=SQLshujuku.1;Data Source=lgtf;Initial Catalog=student;Use

12、r ID=sa;Password=123456”,”,”,adConnectUnspecified);上面代码中的“SQLshujuku.1”代表数据提供程序,“lgtf”是SQL Server服务器名,如果是本地服务器,则可以写成“(local)”。“student”是登录的数据库名,“123456”是登录服务器的密码,在验证是可以根据自己的具体情况进行修改。在应用程序中,一般在使用完成数据库后,应该关闭与数据源的连接。ADO在关闭连接的同时,也将关闭所有使用这个连接的ADO对象。关闭连接的代码:m_pConn-Close();m_pConn=NILL。5.2 操作记录 在ADO数据库编程中

13、,Recordset对象代表一个表的记录集合或者是一个SQL语句或存储过程的执行结果。通过Recordset对象我们就可以进行查询、添加记录、修改记录和删除记录等的操作。5.2.1 打开与关闭记录集 要操作访问记录集,就必须先打开记录集。其操作步骤是:首先声明一个_RecordsetPtr指针并调用CreateInstance()函数创建一个Rrcordset对象实例,然后调用open()函数打开记录集。Open()函数原型如下:HRESULT Open(const_variant_t& Source,const_variant_t&ActiveConnection,enum CursorTy

14、peEnum CursorType,enum LockTypeEnum LockType,long Options);其中,参数Source用于指定打开记录集的数据源,它可以是Command对象变量、SQL语句、表名或存储过程;ActiveConnection是一个连接对象的变量名或者是一个包含连接信息的字符串,用于指定是在哪一个连接中打开记录集;CursorType是一个CursorTypeEnum枚举类型常量,用于指定打开记录集市使用的游标,取值可以是adOpenStatic(静态游标)、adOpenDynamic(动态游标)、adOpenForwardOnly(前向游标)、和adOpen

15、Keyset(键集游标)之一;LockType是一个LockTypeEnum枚举类型常量,用于指定打开记录集时使用的锁定类型,取值可以是adLockReadOnly(只读)、adLockPessimistic(悲观锁定)、adLockOptimistic(乐观锁定)和adLockBatchOptimistic(乐观批量更新)之一。示例程序代码如下:_RecordsetPtr m_pRs;m_pRs.CreateInstance(_uuidof(Recordset); /创建Recordset对象实例m_pRs-Open (“SELECT *FROM AddressList”,m_pConnec

16、tion.GetInterfacePtrI(),adOpenDynamic,adLockOptimistic,adCmdText);对记录集的操作完成后,应关闭记录,释放占用的系统资源。调用Recordset对象的Close()函数可以关闭记录集,示例代码如下:m_pRs.Close();m_pRs=NULL;5.2.2 在记录集中定位在记录集被打开后,就可以访问记录集中的当前记录了,但如果要向访问其他记录,就需要在记录集中移动游标来进行定位。Recordset对象提供了4个成员函数:MoveFirst()、MoveLast()、MovePrevious()和MoveNext(),来帮助我们在

17、记录集中进行定位。如果当前记录是第一条记录,则调用MovePrevious()函数后,游标移动到第一条记录的前面,此时,如果进行记录的存取操作或者是再次调用了MovePrevious()函数,则将产生异常。如果程序中没有处理异常,则程序将终止并退出。解决这一问题的方法是:当调用MovePrevious()函数后使得游标指向第一条记录的前面时,应调用MoveFirst()函数使得游标移动到第一条记录。通过判断Recordset对象的BOF属性值,就可以知道游标是否移动到了第一条记录的前面,其值为TRUE,则说明游标已经移动到了第一条记录的前面。实例代码如下:M_pRs.MovePrevious(

18、);if(m_pRs.BOF) m_pRs.MoveFirst();同理,通过判断Rcordset对象的adoEOF属性值,就可以知道游标是否移动到了最后一条记录的后面,气值为TRUE,则说明游标已经移动到了最后一条记录的后面。示例代码如下:m_pRs.MoveNext();if(m_pRs.adoBOF) m_pRs.MoveLast();参考文献: 1原奕等编著.VisualC+实践与提高数据库开发与工程应用篇M.北京:中国铁道出版社,2006 2DavidSceppa著,石钧,葛俊译.ADO编程技术M.北京:清华大学出版社,2001 3厄拉森.MFCVisualC+6编程技术内幕M.北京:机械工业出版社,2000 4江淑娟,苏蕊等.利用ADO方法在C/S模式下实现远程数据访问J,山东科技大学学报(自然科学版),2003,22(1):73-75

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号