VC++访问数据库的方法研究

时间:2022-05-27 12:21:02

VC++访问数据库的方法研究

摘要:用vc++开发一个管理系统,要使用数据库对所需的数据进行存储与管理。该文介绍了Visual C++访问开发数据库的几种技术概况及其访问的方法:ODBC,DAO,OLE/DB和ADO,并对各种技术的使用范围、访问效率、工作稳定性等进行了比较,并给出了基本使用方法。

关键词:ODBC;DAO;OLE/DB;ADO

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2009)05-1051-02

VC++ to Access the Database of the Method

ZHAO Mei-li1,TANG Jing2

(1.Naval Academy Computer Department of Bengbu,Bengbu 233000,China;2.Fengyang Normal school,Fengyang 233100,China)

Abstract: Develops a management system management system with VC++ must use the database to carry on the memory and the management the data which needs. This paper introduces the Visual C + + to access the database of profiles and their visit to several technical approaches: ODBC, DAO, OLE/DB and ADO,and the use of various technologies, access efficiency, job stability, etc. were compared, and gives the basic use.

Key words:ODBC; DAO; OLE/DB; ADO

1 引言

随着Visual C++软件开发工具的广泛推广记载数据库方面的应用日趋广泛和深入,越来越多的软件开发人员和爱好者希望理解并掌握应用Visual C++管理开发数据库的技术和方法。VC++提供了几种接口(ODBC、DAO、OLE/DB、ADO)来支持数据库编程,利用这些接口可以在程序中直接操作各种各样的数据库,如(SQL Server、Microsoft Access、Microsoft FoxPro等等。

2 ODBC

ODBC(Open Database Connection 开放数据库互连)是一种使用SQL的数据库应用程序设计接口。它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口),为ODBC编程提供了一个面向对象的方法,这使得利用MFC来创建ODBC的应用程序非常方便。在使用ODBC API时,用户须引入的头文件“sql.h”,”sqlext.h”,”sqhypes.h”。MFC对ODBC的封装主要是开发了Cdatabase类和CRecordSet类[1]。

Cdatabase类:该类可以实现对数据源的操作。通过构造Cdatabase类对象,调用它的Open或者OpenEx成员函数建立数据源连接。CRecordSet类:记录集类提供从数据源中提取的结果记录集并对其进行操作。它通过SQL语句返回,可以对表和视图进行查询或存储。要注意的是在应用程序中,一般不直接使用CRecordSet类而是使用其派生类,因为当使用MFC Class Wizard 产生一个CRecordSet类的派生类时MFC Class Wizard会自动添加相应数据库表中字段的成员变量并自动重载CRecordSet类的成员函数DoFieldExchange()。通过使用RFX函数来完成数据库字段与记录集字段数据成员变量的数据交换。在程序中使用MFC ODBC,除登录数据源之外,还需要在stdafx.h中包含afxdb.h。

3 DAO

ODBC的优点是它的使用比较简单,只要登录Windows控制面板中的数据源,就可以使ODBC连接到相应的数据库。但是使用ODBC访问数据库速度较慢,同时ODBC德尔使用需要很多相应的部件支持。DAO克服了ODBC的一些缺陷,由于它实际上使通过Microsoft Jet数据库引擎来访问数据库,所以DAO方法非常适合访问Jet型数据库(.mdb),同时使用DAO方法不需要登录数据源,只要指明数据库的路径即可。

VC++的ODBC和DAO方法在使用形式上比较相似, ODBC访问记录集的基类是CRecordSet,DAO则为CdaoRecordSet,差别就是加上“DAO”,通过定义这些类的对象并调用相应的成员函数就可以实现Access数据库和表的动态创建。ODBC存取数据库时使用RFX_LongBinary。使用AppWizard的过程基本上与使用ODBC时相似,只是在选择数据源时要选择已建立好的DAO数据源,在后从系统中选出源数据库和表,令其自动生成这部分的代码。在应用程序中使用MFC DAO可以通过以下步骤来实现:

首先应确保在stdafx.h头文件中包含了afxdao.h头文件:

#include“afxdao.h”

接着创建自己的CdaoRecordSet类(设为MydaoRecordSet),并使它与你所需要的数据库的表相连。同时在文档类的OnOpenDocument()函数中加入

m_pdb=newCDaodatabase

m_pdb->open();

m_pset= newMydaoRecordSet(m_pdb);

m_pset->open();

最后创建自己的对话框,选择ClassWizard的ClassInfo页。在ForeignClass项填入先前所创建的MydaoRecordSet,在ForeignVariable项填入m_pset,并对各个edit栏用变量映射。

4 OLE/DB

DAO也存在较大的缺点:主要是MFC DAO与Jet数据库引擎之间的版本。由于Visual C++.NET环境和向导不再支持DAO(虽然仍包括DAO类),用户必须手工编写过去由向导执行的任务,Microsoft建议新项目采用OLE/DB模板或ODBC。OLE DB是基于COM借口的访问数据库的新技术[2],所以它继承了COM接口所有特性,具有较好的稳定性,由于接口的标准性,使得程序可以被应用到任何提供了数据程序的数据源,因此使用OLE DB开发的程序具有比较好的移植性。另外OLE DB通过将数据库的功能分为客户和服务器两个方面,提高了数据库访问效率。前面提到的传统数据库访问技术(ODBC、DAO)都只能访问关系型数据库,而OLE DB可以访问任何形式的文件系统,包括传统的关系型数据库和非关系型数据源及用户自定义的文件格式。但是在基于COM技术的数据库访问中通常使用ADO技术而不是OLE/DB。

5 ADO

ADO对象模型包括了7个对象:1)数据连接(Connection)对象建立一个数据交换环境,应用程序通过Connection访问数据;2)命令(Command)对象通过已建立的Connection命令完成操作数据库功能;3)记录集(RecordSet)对象存储查询命令返回的结果;4)错(Error)对象时记录应用ADO过程中出现错误的信息;5)属性(Property)对象代表数据提供者的具体属性;6)字段(Field)对象代表一个记录集的一个域;7)参数(Parameter)对象代表SQL存储过程或有参数查询中的参数。其中Connection、Command和RecordSet三个对象是主体对象,它们可以被独立创建和释放。Connection对象是用来建立和维护与数据源的连接,对数据创建和执行对数据库的操作命令,可以使用该对象执行SQL语句或调用存储过程;Command对象执行后将返回一个RecordSet对象。RecordSet对象包含执行数据库操作后返回的一个记录集。通过该对象可以浏览和更新数据库中保存的记录[3]。

上一篇:本体理论及其在仿真想定校验中的应用研究 下一篇:如何提高基层气象信息网络的安全