Visual C++数据库编程.ppt_第1页
Visual C++数据库编程.ppt_第2页
Visual C++数据库编程.ppt_第3页
Visual C++数据库编程.ppt_第4页
Visual C++数据库编程.ppt_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

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

文档简介

1、Windows程序设计教程,第13章 VC数据库编程,数据库是数据管理的重要技术之一,是计算机科学的重要分支。 目前,信息资源已成为各个企业、部门的重要财富和资源。 作为信息系统核心和基础的数据库技术得到越来越广泛的应用,数据库编程已经成为软件生产的重要内容。,Visual C+通过若干种接口来支持关系数据库的访问,这些接口包括ODBC(开放式数据库连接)、RDO(远程数据对象)、DAO(数据访问对象)、OLE DB和ADO(ActiveX数据对象)。 这些接口反映了Micorsoft对数据库支持的发展演化过程。,本章重点围绕使用ADO进行数据库开发进行讨论,介绍在Viusal C+中使用AD

2、O对象进行数据库编程的基本知识和方法,最后给出一个数据库系统开发的实例。,13.1 数据库基础,在介绍数据库程序开发之前,有必要简单介绍一下数据库及其管理、使用的相关概念。 当然,对于有一定数据库基础的读者可略过本节。,13.1.1 数据库的基本概念,数据库是数据的集合,它由一个或多个表组成。 每一个表中都存储了对一类对象的数据描述。经常见到的成绩表就是一种表,它由行和列组成,并且可以通过名字来识别数据。 列包含了列的名字、数据类型以及列的其他属性;行包含了列的记录或者数据。,下面给出一个成绩表Mark,其中学号、姓名、语文、数学、英语都是列,而行包含了这个表的数据,即每个人的各科成绩,表的结

3、构如图13.1所示。,图13.1 Mark表结构,13.1.2 数据库管理系统(DBMS),数据库管理系统(Data Base Management System,DBMS)是指数据库系统中对数据进行管理的软件系统,它是数据库系统的核心组成部分,例如FoxPro、Access、Sybase、SQL Server等都是DBMS。,数据库系统的一切操作,包括查询、更新、以及各种控制,都是DBMS进行的。 图13.2所示为用户、DBMS和数据库三者的关系。,图13.2 用户、DBMS和数据库的关系,13.1.3 结构化查询语言(SQL),SQL(Structured Query Language,结

4、构化查询语言)最早由IBM提出,是专门用来处理关系数据库的基于文本的语言。,SQL向数据库提供了完善而一致的接口,它不是独立的计算机语言,需要DBMS的支持方能执行。 SQL是一种标准的数据库语言,目前大多数DBMS都支持它。,1SQL语言的分类,SQL可以创建、维护、保护数据库对象,并且可以操作对象中的数据。 依据SQL语言的执行功能,可以将SQL分为以下几部分:,(1)数据定义语言(Data Definition Language,DDL) (2)数据查询语言(Data Query Language,DQL) (3)数据操纵语言(Data Manipulation Language,DML

5、):,(4)数据控制语言( Data Control Language,DCL): (5)其他语言要素(Additional Language Elements),3SQL数据类型,13.2 数据库开发技术简介,13.2.1 ODBC API/MFC ODBC技术 ODBC(Open Database Connectivity,开放式数据库互联),实际上是一个数据库访问库,它包含访问不同数据库所要求的ODBC驱动程序。,如要操作Foxpro数据库,要用Foxpro的ODBC驱动程序;要访问dBase,要用dBase的ODBC驱动程序。,总之,应用程序要操作不同类型的数据库,只要调用ODBC所支

6、持的函数,动态链接到不同的驱动程序上即可。 随着ODBC技术的推出,许多开发工具软件都把ODBC技术集成到自己的软件中,如Visual basic、Visual C+、Power Builder等。,一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。 也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。 由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。,图13.3 ODBC部件关系图,MFC主要包括下列ODBC类: (1)CDatabase类 (

7、2)CRecordset类 (3)CRecordView类 (4)CFieldExchange类 (5)CDBException类,13.2.2 DAO技术,DAO(Data Access Object,数据访问对象)是第一个面向对象的接口,该技术最初用于像Access这样的MicroSoft产品中。 DAO依赖于用MicroSoft Access自动获得的MicroSoft Jet数据库引擎。,另外,DAO还是较早版本的Visual Basic所使用的引擎(最新版的Visual Basic和Visual C+依赖于相同的ADO/OLE-DB组合),所以如果需要支持较早的Visual Basi

8、c应用程序,那么DAO是一个不错的选择。 不过,目前此技术有被OLE DB/ADO取代地趋势,所以一般也不再使用。,13.2.3 ADO技术,ADO,即ActiveX Data Objects,是一种特殊的OLE DB客户程序,它允许访问程序在Visual C+、Visual Basic、VBscript、Java等编程语言中访问。 ADO是微软大力推荐使用的编程接口,在微软已经停止对ODBC和DAO继续发展的今天,学习使用ADO无疑是正确的选择。ADO同OLE DB、数据库应用以及数据源之间的关系如图13.4所示。,图13.4 ADO同OLE DB、数据库应用以及数据源之间的关系,1ADO的

9、优越性,对于数据库编程人员来说,ADO具有如下优越性: (1)便于使用; (2)支持多种编程语言,包括Visual Basic、Java、C+、VBScript和JavaScript;,(3)支持任何的OLE DB服务器,ADO可以操作任何的OLE DB数据源; (4)不损失任何OLE DB的功能,ADO支持C+编程人员操作底层的OLE DB接口; (5)可扩展性,ADO能够通过提供者属性集合动态地表示指定的数据提供者,还能够支持COM的扩展数据类型。,2ADO对象模型,(1)连接对象(Connection)。 (2)命令对象(Command)。 (3)参数对象(Parameter)。 (4)

10、记录集对象(Recordset)。 (5)字段对象(Field)。 (6)错误对象(Error)。 (7)属性对象(Property)。,图13.5 ADO对象模型,图13.6 ADOProperties集合和Property对象,3ADO编程,(1)创建一个Connection对象。 (2)打开数据源,建立同数据源的连接。 (3)执行一个SQL命令。 (4)使用结果集。 (5)终止连接。,13.3 在Visual C+中使用ADO开发数据库应用程序,在应用程序中,通过ADO和SQL语句的配合,可以实现对数据库的一系列操作,例如创建数据库、创建表、创建索引,实现数据库的多重查询、高级查询和数据

11、的汇总等技术。 在本节,将通过一个具体的实例详细讲解如何在Visual C+中使用ADO对象开发数据库应用程序。,13.3.1 Viusal C+对ADO的支持,Visual C+6.0为ADO操作提供了库支持,一般情况下,每个Windows操作系统的Program FilesCommon FilesSystemado目录下都有一个msado*.dll文件,根据Windows版本的不同,该文件可以是msado1.dll、msado15.dll或msado2.dll。,在使用Visual C+6.0进行ADO编程时,可以借助Visual C+6.0的import预编译指令,将该库文件引用到工程里

12、,从而使msado*.dll库里的数据和函数声明被应用的代码所使用。,(1)_ConnectionPtr (2)_RecordsetPtr (3)_CommandPtr (4)_ParameterPtr (5)FieldPtr (6)ErrorPtr (7)PropertyPtr,图13.7 Visual C+中典型的ADO对象使用流程,在Visual C+中,使用ADO开发数据库应用程序通常情况下按照如下4个步骤即可: (1)初始化OLE/COM库; (2)用Connection对象连接数据库;,(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Rec

13、ordset对象取得结果记录集进行查询、处理; (4)使用完毕后关闭连接,释放对象。,13.3.2 创建数据库与实例工程,实例数据库采用Access2000数据库。 启动Access,执行【文件】|【新建】菜单命令,创建一个空的数据库Student.mdb。 可以在Access中添加设计数据库表,也可以在VC程序中通过ADO创建数据库表,本例采用后者。,1创建工程 2添加编辑对话框资源,图13.8 对话框模板设计,3实现按钮状态控制,13.3.3 引入ADO对象,ADO是一组动态链接库,因此在使用之前还必须导入ADO并且初始化。 在MFC应用里,一般在应用类的InitInstance成员函数里

14、初始化OLE/COM库环境比较合适。 初始化过程非常简单,只需简单地调用AfxOleInit函数即可。,13.3.4 连接数据源,在工程中引入ADO对象后,就可以通过Connection对象连接数据源了。 其具体实现如下: (1)在头文件TestDlg.h中,定义一个指向Connection对象的指针。 (2)在CTestDlg类的OnInitDialog()函数中,通过Connection对象连接创建的数据库Student.mdb。,13.3.5 开发技术连接对象Connection),连接对象表示到数据源的打开的连接,同时也表示与数据源的唯一会话。 通常在使用ADO操作数据库之前必须首先创

15、建一个连接对象。 连接对象为ADO对数据源的操作提供了一个操作环境,还可以用于操作事务处理。,1连接对象的方法,(1)Open()函数打开与数据源的连接。,(2)Close()函数关闭连接。 (3)Execute()函数执行SQL指令。 (4)事务处理函数。,2连接对象的属性,(1)ConnectionTimeOut属性。 (2)CommandTimeOut属性。 (3)DefaultDatabase属性。,13.3.6 创建表并添加数据,在实例中,创建Access数据库时并没有创建数据库表。 在程序的初始化函数OnInitDialog()中,通过连接对象执行SQL语句创建一个数据库表stud

16、entinfo,该表包含4个字段,分别为stuNo、stuname、stuaddress和stuphone,类型均为TEXT类型。,13.3.7 开发技术ADO对象命令的执行,在ADO对象中,有两种不同的方法可以执行命令。 第一种方法是调用Connection对象的Execute()函数,在13.3.5节已经介绍过程,实例中使用的也是这种方法。 第二种方法是使用命令对象(Command),它可用于处理负责的命令和使用参数化命令。本节将主要讨论第二种方法的使用。,当要执行复杂的命令以及执行带参数的命令时,需要使用命令对象对数据源进行操作。,在实际程序开发中,经常需要执行带参数的命令。 参数命令允

17、许用户与所要执行的命令有更多的交互,增加了应用程序的灵活性。 参数命令的执行过程与普通命令相似,只是需要创建参数值。,13.3.8 开发技术Recordset对象,要访问和操作数据源的数据就需要创建记录集对象(Recordset)。 本节将介绍记录集对象的相关操作,在使用Recordset对象前,假定已经成功建立了数据源的连接,连接对象指针为m_pConnection。,1创建记录集 2打开记录集,3获取记录集的特性支持,4遍历记录集,(1)简单滚动记录集函数。,(2)Move()函数。 (3)定位记录集。 (4)按页滚动。 (5)GetRows()函数获取多行数据。,5访问记录集中的数据 6

18、记录集更新 (1)插入新行。 (2)编辑、更新行。 (3)删除行。,13.3.9 遍历、删除、编辑记录的实现,介绍了Recordset对象后,下面回到实例的开发。 在前面实现了创建与数据库的连接、数据库表的创建和通过Connect对象执行SQL语句向数据库表中添加记录。 在本节,将实现遍历表中的记录,并能编辑和删除当前显示的记录。,1遍历表中的记录并显示记录,当用户在程序中选中【删除记录】或【编辑记录】单选按钮时,在学生信息的编辑框中将显示studentinfo表中的第一条记录,并能通过【导航】按钮实现遍历记录集中的所有记录。,2实现删除记录操作 3实现编辑记录操作 4关闭记录集和连接,图13

19、.9 程序的运行结果,13.4 使用ODBC数据源连接数据库,ODBC为应用程序和数据库系统之间的中间件。 它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互来实现对数据库的操作,避免了在应用程序中直接调用与数据库相关的操作,从而提供了数据库的独立性。,在实际数据库程序开发中,多将数据库添加到ODBC数据源,通过ODBC数据源连接数据库,从而避免直接操作数据库文件。 使用ADO也可以实现与ODBC数据源的连接。 本节将主要介绍一下ODBC数据源的设置与连接。,13.4.1 手动实现设置ODBC数据源,ODBC数据源管理器负责安装驱动程序、管理数据源,并帮助程序员跟踪ODBC的函

20、数调用。 ODBC数据源管理器负责将应用程序的SQL语句及其他信息传递给驱动程序,而驱动程序则负责将运行结果送回应用程序。,图13.10 ODBC数据源管理器,图13.11 创建新数据源对话框,图13.12 ODBC Microsoft Access安装对话框,图13.13 选择数据库对话框,13.4.2 ADO连接ODBC数据源,设置了ODBC数据源后,ADO的Connection对象就可以直接通过数据源名studb访问Access数据库Student。,13.4.3 Visual C+程序实现设置ODBC数据源,为了使ODBC能与数据库一起工作,必须把数据库注册到ODBC驱动程序管理器,可

21、以使用13.4.1节介绍的手工配置的方法。 但手工配置对用户而言过于复杂,必须考虑用程序替用户完成这些配置工作。,事实上,完全可以使用Visual C+编写程序实现ODBC数据源的注册。实现的方法有几种。 一种办法是用程序修改Windows注册表,程序员可以用Windows API函数增改HKEY_LOCAL_MACHINESoftwareODBC下的ODBC.INI中的键值。,这种方法比较烦琐,这里推荐一种在程序中使用ODBC API的方法,程序员在任何时候都可以用Visual C+编写的程序调用API函数SQLConfigDataSource()来设置ODBC数据源。,SQLConfigDataSource()函数的原型如下: BOOL SQLConfigDataSource(HWND hwndParent,UINT fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes);,13.4.4 使用Visual C+程序设置ODBC数据源实例,本节给出

温馨提示

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

评论

0/150

提交评论