C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14

上传人:E**** 文档编号:89155411 上传时间:2019-05-19 格式:PPT 页数:48 大小:136.01KB
返回 下载 相关 举报
C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14_第1页
第1页 / 共48页
C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14_第2页
第2页 / 共48页
C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14_第3页
第3页 / 共48页
C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14_第4页
第4页 / 共48页
C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14》由会员分享,可在线阅读,更多相关《C++程序设计与应用 教学课件 ppt 作者 周仲宁 2 courseware14(48页珍藏版)》请在金锄头文库上搜索。

1、第14章 数据库编程,C+高级编程,本章主要教学内容,简略介绍与数据库相关的基本理论、关键概念及数据库的基本操作。 介绍ODBC、DAO及MFC对数据库编程的支持及相关的MFC类。 实际使用Visual C+作为开发工具进行一个数据库应用程序的编写。,14.1.1 数据库及数据库管理系统,14.1 数据库编程概述,1. 数据库:数据的集合,由一个或多个表组成。,2. 表:存储对一类对象的描述。,3. 记录和字段:表的一行是一个记录。 记录描述一个具体对象的信息。 表的一列是一个字段。 字段描述表中所有对象的共同属性。,14.1.1 数据库及数据库管理系统,4. DBMS:Database Ma

2、nagement System 是用来定义、管理和处理数据库与应用程序之间的联系的一套程序。 14.关系型数据库管理系统: 根据定义的关系来存储、处理和管理数据库信息的数据库管理系统。,14.1.2 有关数据库编程的几个关键概念,1. SQL:Structured Query Language 结构化查询语言 SQL只对具有关系模型的各种对象进行操作。,SQL,DDL,DCL,DML,举例见P107,14.1.2 有关数据库编程的几个关键概念,2. ODBC: Open Database Connectivity 开放式数据库连接,ODBC是WOSA中有关数据库的一个组成部分。 ODBC是一种

3、标准API(应用程序接口),用来在相关或不相关的数据库管理系统中存取数据。,什么是ODBC?,14.1.2 有关数据库编程的几个关键概念,基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应DBMS的ODBC驱动程序完成。 ODBC让应用程序的开发者避免了与数据源相连的复杂性。,ODBC的组成: P107 图5-2,14.1.2 有关数据库编程的几个关键概念,(1)应用程序。 (2)ODBC管理器:该程序位于Windows 控制面板的管理工具的ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。,(3) 驱动程序管理器:驱动程序管理

4、器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。 (4) ODBC API。 (5) ODBC驱动程序:是一些DLL,提供了ODBC和数据库之间的接口。 (6) 数据源:数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。,14.1.2 有关数据库编程的几个关键概念,14.1.2 有关数据库编程的几个关键概念,数据库建立好之后,要设定DSN,才能让ODBC知道数据库所在的位置以及数据库相关的属性。使用DSN的好处还有:如果移动数据库档案的位置,或是换成别种类型的数据库,只要重新设定 DSN 就可以了,不需要去修改原来使用

5、的程序。,什么是DSN?,DSN:Data Source Name,即数据源名称,ODBC组成部件之间的关系:,14.1.2 有关数据库编程的几个关键概念,应用程序若需要访问一个数据库,必须首先用ODBC管理器注册一个数据源。 驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的ODBC驱动程序,ODBC驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。,ODBC API必须通过驱动程序管理器与数据库交换信息,而不能直接访问数据库。 应用程序在访问数据源时,需要ODBC驱动程序的支持。,14.1.2 有关数据库编程的几个关键概念,VC+可以安装的ODBC驱动程序

6、:P108,14.1.2 有关数据库编程的几个关键概念,3. RFX: Record Field Exchange 记录字段数据交换,RFX是数据库编程中数据交换的内部基础,它更紧密地与记录集对象相联系,隐于后台。,RFX在用户选择的记录集和隐藏于后台的数据源之间建立对应关系,是用户能通过操作此记录集来实现对数据源的操作。,DDX(Dialog Data Exchange)-对话框数据交换 它在对话框的可视控件和成员变量之间建立双向的对应关系,使用户能通过对话框上的控件浏览和修改变量的取值。DDX是数据库编程中数据交换在对话框界面上实现的基础,它更紧密地与视图对象相联系,显现于前台。,14.1

7、.2 有关数据库编程的几个关键概念,14.1.3 MFC的ODBC类简介,MFC的ODBC类: CDatabase类: CRecordset类: CRecordView类: CFieldExchange类: CDBException类:,1. CDatabase类,14.1.3 MFC的ODBC类简介,CDatabase对象表示到数据源的连接,通过它可以连接、操作、和使用数据源。 在应用程序中可以同时使用一个或多个CDatabase对象。 为了使用CDatabase 对象,必须包含头文件: #include 。,CDatabase类的数据成员和成员函数:P109111,要建立与数据源的连接,首

8、先应构造一个CDatabase对象,然后再调用CDatabase的Open()成员函数。Open()函数负责建立连接,其函数原型为:,14.1.3 MFC的ODBC类简介,virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC;“, BOOL bUseCursorLib = TRUE );,1) lpszDSN指定了数据源名。在lpszConnect参数中也可包括数据源名,此时lpszDSN必需为NULL,若在函数中未提供数据

9、源名且使lpszDSN为NULL,则会显示一个数据源对话框,用户可以在该对话框中选择一个数据源。,14.1.3 MFC的ODBC类简介,Open()函数的参数说明:,2) bExclusive说明是否独占数据源。由于目前版本的类库还不支持独占方式,故该参数的值应该是FALSE,这说明数据源是被共享的。,14.1.3 MFC的ODBC类简介,14.1.3 MFC的ODBC类简介,3) 参数bReadOnly若为TRUE则对数据源的连接是只读的。参数lpszConnect指定了一个连接字符串,连接字符串中可以包括数据源名、用户帐号(ID)和口令等信息,字符串中的ODBC表示要连接到一个ODBC数据

10、源上。,4) 参数bUseCursorLib若为TRUE,则会装载光标库,否则不装载,快照需要光标库,动态集不需要光标库。 若连接成功,函数返回TRUE,若返回FALSE,则说明用户在数据源对话框中按了Cancel按钮。若函数内部出现错误,则框架会产生一个异常。下面是一个调用Open()函数的例子:,14.1.3 MFC的ODBC类简介,/在文档类中嵌入一个CDatabase对象 CDatabase m_db; /连接到一个名为Student Registration的数据源 m_db.Open(“Student Registration“); /在连接数据源的同时指定了用户帐号和口令 m_d

11、b.Open(NULL,FALSE,FALSE,“ODBC;DSN=Student Registration;UID=ZYF;PWD=1234“);,14.1.3 MFC的ODBC类简介,要从一个数据源中脱离,可调用函数Close( )。在脱离后,可以再次调用Open( )函数来建立一个新的连接。 调用IsOpen( )函数可判断当前是否有一个连接,调用GetConnect( )可返回当前的连接字符串。 需要注意的是CDatabase的析构函数会自动调用Close( )函数,所以只要删除了CDatabase对象就可以与数据源脱离。,14.1.3 MFC的ODBC类简介,14.1.3 MFC的O

12、DBC类简介,2. CRecordset类,CRecordset对象代表某个数据源中的一个记录集,即选定记录的集合。该类是MFC的ODBC类中最重要、功能最强大的类。 为了使用CDatabase 对象,必须包含头文件: #include 。,CRecordset类的数据成员和成员函数:P111112,记录集主要分为快照(Snapshot) 和动态集(Dynaset)两种,CRecordset类对这两者都支持。这两种记录集的不同表现在:它们对别的应用程序改变数据源记录时,采取了不同的处理方法。,14.1.3 MFC的ODBC类简介,快照型记录集提供了对数据的静态视图。快照是个很形象的术语,就好象

13、对数据源的某些记录照了一张照片一样。当别的用户改变了记录时(包括修改、添加和删除),快照中的记录不受影响,也就是说,快照不反映别的用户对数据源记录的改变。直到调用了CRecordset:Requery重新查询后,快照才会反映变化。对于象产生报告或执行计算这样的不希望中途变动的工作,快照是很有用的。需要指出的是,快照的这种静态特性是相对于别的用户而言的,它会正确反映由本身用户对记录的修改和删除,但对于新添加的记录直到调用Requery后才能反映到快照中。,动态集提供了数据的动态视图,当别的用户修改或删除了记录集中的记录时,会在动态集中反映出来:当滚动到修改过的记录时对其所作的修改会立即反映到动态

14、集中,当记录被删除时,MFC代码会跳过记录集中的删除部分。对于其它用户添加的记录,直到调用Requery时,才会在动态集中反映出来。本身应用程序对记录的修改、添加和删除会反映在动态集中。当数据必须是动态的时侯,使用动态集是最适合的。例如,在一个火车票联网售票系统中,显然应该用动态集随时反映出共享数据的变化。,14.1.3 MFC的ODBC类简介,3. CRecordView类,CRecordView(记录视图)是CFormView的派生类,它提供了一个表单视图来显示当前记录,用户可以通过表单视图显示、修改、添加和删除数据,用户一般需要创建一个CRecordView的派生类并在其对应的对话框模板

15、中加入控件。,记录视图使用DDX数据交换机制在表单中的控件和记录集之间交换数据。在前面介绍的DDX都是在控件和控件父窗口的数据成员之间交换数据,而记录视图则是在控件和一个外部对象(CRecordset的派生类对象)之间交换数据,交换数据的代码是ClassWizard自动加入的。关于CRecordView类的进一步说明见附件1。,14.1.3 MFC的ODBC类简介,14.1.3 MFC的ODBC类简介,4. CFieldExchange类,CFieldExchange类没有基类; CFieldExchange类用于支持RFX(记录字段交换)和BulkRFX(批量记录字段交换); 常被CData

16、base类使用 ;,14.1.3 MFC的ODBC类简介,14. CDBException类,CDBException对象表示数据库类引起的异常条件; CDBException对象由Cdatabase类的成员函数构造和产生; CDBException类包括两个共有数据成员: m_nRetCode:用来确定异常原因 m_strError:用来描述异常的相关信息;,14.1.3 MFC的ODBC类简介,什么是异常?,单词“exception”是短语“exceptional event(异常事件)”的缩写,它定义如下:,定义:异常是程序在执行时发生的事件,它会打断指令的正常流程。,例如数据源或网络I/O错误时,就会产生异常。但执行程序的正常过程中预计会看到的错误不认为是异常。关于抛出异常见附带文件2,概括地讲,CDatabase针对某个数据库,它负责连接数据源;CRecordset针对数据源中的记录集,它负责对记录的操作;CRecordView负责界面,而CFieldExchange负责CRecordset与数据源的数据交换。,14.1.3 MFC的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号