第16节用MFC设计数据库应用程序_第1页
第16节用MFC设计数据库应用程序_第2页
第16节用MFC设计数据库应用程序_第3页
第16节用MFC设计数据库应用程序_第4页
第16节用MFC设计数据库应用程序_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第16节用MFC设计数据库应用程序本章主要内容数据库应用系统及数据库系统。ODBC的基本概念和结构。使用ODBC数据库类编写数据库应用程序。使用ADO数据库类编写数据库应用程序介绍。

数据库系统及数据库应用程序数据库系统数据库系统组成

数据库系统及数据库应用程序

标准接口数据库应用系统的设计 数据库设计 数据库应用程序设计

数据库系统及数据库应用程序VC数据库编程VisualC++通过若干种接口来支持关系数据库的访问,这些接口包括ODBC(开发式数据库连接)、RDO(远程数据对象)、DAO(数据访问对象)、OLEDB和ADO(ActiveX数据对象)。这些接口反映了Micorsoft对数据库支持的发展演化过程。16.2数据库开发技术简介本节简要介绍VisualC++中常用的数据库开发技术,大致分为三类,即ODBCAPI/MFCODBC、DAO以及ADO。其中,MFCODBC是MFC对ODBCAPI的封装,ADO是OLEDB的高层接口。16.2.1ODBCAPI/MFCODBC技术ODBC(OpenDatabaseConectivity,开放式数据库互联),实际上是一个数据库访问库,它包含访问不同数据库所要求的ODBC驱动程序。如要操作Foxpro数据库,要用Foxpro的ODBC驱动程序;要访问DBASE,要用DBASE的ODBC驱动程序。总之,应用程序要操作不同类型的数据库,只要调用ODBC所支持的函数,动态链接到不同的驱动程序上即可。随着ODBC技术的推出,许多开发工具软件都把ODBC技术集成到自己的软件中,如,Visualbasic、VisualC++、PowerBuilder等等。.1

ODBC的基本构成16.2.2DAO技术DAO(DataAccessObject,数据访问对象)是第一个面向对象地接口,该技术最初用于像Access这样的MicroSoft产品中。DAO依赖于用MicroSoftAccess自动获得的MicroSoftJet数据库引擎。另外,DAO还是较早版本的VisualBasic所使用的引擎(最新版的VisualBasic和VisualC++依赖于相同的ADO/OLE-DB组合),所以如果需要支持较早的VisualBasic应用程序,那么DAO是一个不错的选择。不过,目前此技术有被OLEDB/ADO取代地趋势,所以一般也不再使用。16.2.3ADO技术ADO,即ActiveXDataObjects,是一种特殊的OLEDB客户程序,它允许访问程序在VisualC++、VisualBasic、VBscript、Java等编程语言中访问。ADO是微软大力推荐使用的编程接口,在微软已经停止对ODBC和DAO继续发展的今天,学习使用ADO无疑是正确的选择。ODBC管理器配置ODBC数据源的方法和步骤

配置ODBC数据源MFC的ODBC类有CDatabase(数据库类)、CRecordset(记录集类)、CRecordView(可视记录集类)、CfieldExchange(数据交换类)、CDBException(异常类)。这些类的对象相互配合完成诸如连接数据源、选择和操纵记录、在表单中显示操纵数据、直接调用ODBCAPI函数和使用SQL语句等工作,也可以与MFC的文档/视图框架结构协同工作。

MFC的ODBC类CDatabase类CDatabase类对象提供了对数据源的连接,通过它可以对数据源进行操作。应用程序要访问数据源提供的数据,必须先创建一个与数据源相关联的CDatabase类对象。在这个类中封装了一些与数据源进行连接相关的操作。

MFC的ODBC类例如下面的代码创建了一个CDatabase对象m_db并与数据源tmsDSN进行了连接:

CDatabase

m_db;//创建CDatabase对象//使用数据源tmsDSN或连接字符串"ODBC;UID=sa"连接

(_T("tmsDSN"), FALSE,FALSE, _T("ODBC;DSN=tmsDSN;UID=sa");

MFC的ODBC类

MFC的ODBC类CRecordset类CRecordset类对象提供从数据源中提取出的记录集。CRecordset对象有动态行集(dynaset)和快照集(snapshot)两种工作方式。 动态行集能与其他用户所做的更改保持同步。 快照集则是数据的一个静态视图。

MFC的ODBC类使用CRecordset派生类的对象选择和操纵数据源数据。例如检查当前记录的数据字段,过滤、排序记录集,编写默认的SQLSELECT语句,对选择的记录进行滚动,添加、修改、删除记录,刷新记录集等等。例如CDatabase

m_db;m_db.Open(_T("tmsDSN"),FALSE,FALSE, _T("ODBC;UID=sa"),FALSE);CRecordset

m_set(&m_db);m_set.Open(AFX_DB_USE_DEFAULT_TYPE, "select*fromstudent");...//使用记录集m_set.Close();();

MFC的ODBC类

MFC的ODBC类CDBException类例如//rs为CRecordset派生类的对象try{();}catch(CDBException*e){AfxMessageBox(e->m_strError,MB_ICONEXCLAMATION);e->Delete();//删除CDBException对象();//丢失记录位置,移到记录集头return;}();小结:用MFC进行ODBC的编程过程

(1)设计数据库。(2)定义ODBC数据源。(3)创建应用程序外壳。(4)设计主窗体。(5)将控件与数据库字段相关联。(6)编写代码实现相关功能:添加新记录功能、删除记录功能、对记录排序功能、查找记录功能等。显示和处理表中的数据然后把位图装载到对象中:连接两个表C类的使用方法在许多方面非常相似。

ODBC应用程序实例16.6在VisualC++中使用ADO开发数据库应用程序在应用程序中,通过ADO和SQL语句的配合,可以实现对数据库的一系列操作,例如创建数据库、创建表、创建索引,实现数据库的多重查询、高级查询和数据的汇总等技术。在本节,将通过一个具体的实例详细讲解如何在VisualC++中,使用ADO对象开发数据库应用程序。16.6.1ViusalC++对ADO的支持为ADO操作提供了库支持,一般情况下,每个Windows操作系统的ProgramFiles\CommonFiles\System\ado\目录下都有一个msado*.dll文件,根据Windows版本的不同,该文件可以是、或。在使用进行ADO编程时,可以借助的import预编译指令,将该库文件引用到工程里,从而使msado*.dll库里的数据和函数声明被应用的代码所使用。16.6.2创建数据库与实例工程实例数据库采用Access2000数据库。启动Access,执行“文件”→“新建”菜单命令,创建一个空的数据库。可以在Access中,添加设计数据库表,也可以在VC程序中通过ADO创建,本例采用后者。16.6.3引入ADO对象ADO是一组动态链接库,因此在使用之前还必须导入ADO并且初始化。在MFC应用里,一般在应用类的InitInstance成员函数里初始化OLE/COM库环境比较合适。初始化过程非常简单,只需简单地调用AfxOleInit函数即可。16.6.4连接数据源在工程中引入ADO对象后,就可以通过Connection对象连接数据源了。16.6.5开发技术——连接对象(Connection)连接对象表示到数据源的打开的连接,同时也表示与数据源的唯一会话。通常在使用ADO操作数据库之前必须首先创建一个连接对象。连接对象为ADO对数据源的操作提供了一个操作环境,还可以用于操作事务处理。16.6.6创建表并添加数据在实例中,创建Access数据库时,并没有创建数据库表。在程序的初始化函数OnInitDialog中,通过连接对象执行SQL语句创建一个数据库表studentinfo,该表包含四个字段,分别为stuNo、stuname、stuaddress和stuphone,类型均为TEXT类型。16.6.7开发技术——ADO对象命令的执行在ADO对象中,有两种不同的方法可以执行命令。第一种方法是调用Connection对象的Execute函数,实例中使用的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论