《数据库编程》PPT课件.ppt

上传人:小飞机 文档编号:5519553 上传时间:2023-07-16 格式:PPT 页数:106 大小:277.49KB
返回 下载 相关 举报
《数据库编程》PPT课件.ppt_第1页
第1页 / 共106页
《数据库编程》PPT课件.ppt_第2页
第2页 / 共106页
《数据库编程》PPT课件.ppt_第3页
第3页 / 共106页
《数据库编程》PPT课件.ppt_第4页
第4页 / 共106页
《数据库编程》PPT课件.ppt_第5页
第5页 / 共106页
点击查看更多>>
资源描述

《《数据库编程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库编程》PPT课件.ppt(106页珍藏版)》请在三一办公上搜索。

1、第9章 数据库编程,学习目标 本章要点上机练习 习 题,学习目标,管理数据库是计算机的主要用途之一,尤其是商业应用软件基本上都有数据库交互功能。在Visual C+6.0中,用户可以选择使用开放数据连接(ODBC)、数据访问对象(DAO)、OLE DB或ActiveX数据对象(ADO)方式来访问数据库,MFC中也提供了数据库类可以使用户方便地进行数据库操作。本章主要以MFC ODBC访问方式作为对象来学习数据库编辑。,本章要点,常见数据库访问技术简介ODBC简介建立数据源在ODBC数据源管理器中添加ODBC数据库源应用实例,常见数据库访问技术简介,Visual C+提供了多种多样的数据库访问技

2、术ODBC API、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有自己的特点,它们提供了简单、灵活、访问速度快、可扩展性好的开发技术。,常见数据库访问技术简介,Visual C+开发数据库技术的特点Visual C+常用开发数据库技术,Visual C+开发数据库技术的特点,Visual C+在开发数据库技术方面主要有以下几个特点。简单性 灵活性访问速度快 可扩展性 访问不同种类数据源,简单性,Visual C+中提供了MFC类库、ATL模板类以及AppWizard、ClassWizard等一系列的Wizard工具,用于帮助用户快速地建立自己的应用程序,大大简化了应用程序的设计

3、。使用这些技术,可以使开发者编写很少的代码或不需编写代码就可以开发一个数据库应用程序。,灵活性,Visual C+提供的开发环境可以使开发者根据自己的需要设计应用程序的界面和功能,而且,Visual C+提供了丰富的类库和方法,可以使开发者根据自己的应用特点进行选择。,访问速度快,为了解决ODBC开发的数据库应用程序访问数据库速度慢的问题,Visual C+提供了新的访问技术OLE DB和ADO。OLE DB和ADO都是基于COM接口的技术,使用这种技术可以直接对数据库的驱动程序进行访问,大大提高了访问速度。,可扩展性,Visual C+提供了OLE技术和ActiveX技术,这种技术可以增强应

4、用程序的能力。使用OLE技术和ActiveX技术可以使开发者利用Visual C+中提供的各种组件、控件以及第三方开发者提供的组件来创建自己的程序,从而实现应用程序的组件化。使用这种技术可以使应用程序具有良好的可扩展性。,访问不同种类数据源,传统的ODBC技术只能访问关系型数据库,在Visual C+中,提供了OLE DB访问技术,它不仅可以访问关系型数据库,还可以访问非关系型数据库。,Visual C+常用开发数据库技术,Visual C+提供了多种访问数据库的技术,主要有:ODBC(Open DataBase Connectivity)MFC ODBC(Microsoft Foundati

5、on Classes ODBC)DAO(Data Access Object)OLE DB(Object Link and Embedding DataBase)ADO(ActiveX Data Object),Visual C+常用开发数据库技术,这些技术各有自己的特点,下面分别对这些技术进行介绍。ODBCMFC ODBCDAO OLE DB ADO,ODBC,ODBC是客户应用程序访问关系数据库时提供的一个统一的接口,对于不同的数据库,ODBC提供了一套统一的API,使应用程序可以通过API来访问任何提供了ODBC驱动程序的数据库。,ODBC,ODBC是一种底层的访问技术,因此,ODBC

6、API可以使用户应用程序能够从底层设置和控制数据库,完成一些高层数据库技术无法完成的功能。,MFC ODBC,由于直接使用ODBC API编写应用程序要编制大量代码,在Visual C+中提供了MFC ODBC类,封装了ODBC API,这使得利用MFC来创建ODBC应用程序非常简便。,DAO,DAO提供了一种通过程序代码创建和操纵数据库的机制。多个DAO构成一个体系结构,在这个结构中,各个DAO对象协同工作。MFC DAO是Microsoft公司提供的用于访问Microsoft Jet数据库文件(*.mdb)的强有力的数据库开发工具,它通过DAO的封装,向编程人员提供了DAO丰富的操作数据库

7、方法。,OLE DB,OLE DB是Visual C+开发数据库应用中提供的新技术,它基于COM接口。因此,OLE DB对所有的文件系统包括关系数据库和非关系数据库都提供了统一的接口。这些特点使得OLE DB技术比传统的数据库访问技术更加优越。,OLE DB,与ODBC技术相似,OLE DB属于数据库访问技术中的底层接口。直接使用OLE DB来设计数据库应用程序需要大量的代码,因此在Vicual C+中提供了ATL模板,用于设计OLE DB数据应用程序和数据提供程序。,ADO,ADO技术是基于OLE DB的访问接口,它继承了OLE DB技术的优点,并且ADO对OLE DB的接口作了封装,定义了

8、ADO对象,使程序开发得到简化,ADO技术属于数据库访问的高层接口。,ODBC简介,ODBC概述 ODBC组成,ODBC概述,ODBC是Open Database Connectivity的缩写,意思为“开放数据库链接”。ODBC是使用最广泛的Windows应用程序数据库接口。ODBC为不同的数据库资源提供标准的接口,可以使用与数据库管理系统(DBMS)的类型无关的方式访问数据库。,ODBC概述,一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。,ODBC概述,Microsoft推出的ODBC技术为数据库

9、的访问提供了统一的接口。ODBC基于SQL(Structured Query Language),并把它作为访问数据库的标准。这个接口提供了最大限度的相互可操作性:一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。ODBC可以为不同的数据库提供相应的驱动程序。,ODBC概述,ODBC的灵活性表现在以下几个方面:应用程序不会受制于某种专用的API。SQL语句以源代码的方式直接嵌入在应用程序中。应用程序可以以自己的格式接收和发送数据。ODBC的设计完全和ISO Call-Level Interface兼容。,ODB

10、C概述,现在的ODBC数据库驱动程序支持55家公司的数据产品。Visual C+6.0中已经提供了对ODBC3.51的支持,用户可以使用其API函数进行操作。,ODBC组成,ODBC包含了几部分,包括ODBC API、ODBC驱动程序、ODBC驱动管理器、ODBC光标库和ODBC管理器等。一个完整的ODBC由下列几个部分组成:应用程序(Application)。,ODBC组成,ODBC管理器(Administrator):位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和数据源。,ODBC组成,驱动程序管理器(Driver

11、 Manager):包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。ODBC API。,ODBC组成,ODBC 驱动程序:是一些DLL,提供了ODBC和数据库之间的接口。数据源:包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象体现。,ODBC组成结构图,建立数据源,应用程序要访问一个数据库时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。,建立数据源

12、,数据源包含用户将要访问的数据和相关的DBMS及DBMS运行的平台。如果需要通过网络访问数据,还应当包含访问平台的网络。用户不必了解资源的详细信息,只需要通过资源名称即可访问数据。下面为后面的ODBC应用建立一个名为“addressbook”的Access数据库。,在ODBC数据源管理器中添加ODBC数据库源,ODBC应用程序是连接在ODBC数据源上的。本机的数据源可以使用控制面板中ODBC数据源管理器进行配置。下面将刚建立的“addressbook”数据库添加到ODBC数据源管理器中。,与ODBC数据库相关的MFC类,MFC向用户提供了丰富的数据库操作类,便于对数据库的连接和操作,下面介绍几

13、种常见的数据库类。CDatabase类 CRecordset类 CRecordView类,CDatabase类,CDatabase类主要用于对数据库的连接,应用程序通过此连接访问数据源。CDatabase类常用的成员函数有OpenEx()、OpenEx()等,下面分别进行讲解。OpenEx函数 OpenEx,CDatabase类,Close函数 GetConnect函数 GetDatabaseName函数 IsOpen函数 CanUpdate函数 CanTransact函数,OpenEx函数,OpenEx函数用来打开连接,函数原形为:virtual BOOL OpenEx(LPCTSTR lp

14、szConnectString,DWORD dwOptions=0);throw(CDBException,CMemoryException);参数lpszConnectString为ODBC连接字符串,包含数据源名称及可选信息,如用户ID,数据库密码等。如果使用了NULL,将打开“DataSource”对话框,要求用户选择数据源。,OpenEx函数,参数dwOptions为数据的打开方式,其可能的取值为:CDatabase:openReadOnly:只读方式打开CDatabase:useCursorLib:装载ODBC光标库。装入光标库后,光标将屏蔽dynasets功能。CDatabase:

15、noOdbcDialog:不显示ODBC连接对话框。,OpenEx函数,CDatabase:forceOdbcDialog:总是显示ODBC连接对话框。在默认情况下,dwOptions=0,使用可写的共享方式打开,不装载光标库,在连接信息不足以建立连接的情况下打开连接对话框。如果数据源连接成功,函数返回非0值。,OpenEx,Open函数与OpenEx函数功能雷同,可通过调用OpenEx函数实现,与OpenEx函数只是外观的不同,其函数原形为:virtual BOOL Open(LPCTSTR lpszDSN,BOOL bExclusive=FALSE,BOOL bReadOnly=FALSE

16、,LPCTSTR lpszConnect=”ODBC”,BOOL bUseCursorLib=TRUE);throw(CDBException,CMemoryException);,OpenEx,其中,各部分的含义如下:参数lpszDSN为数据源名称;参数bExclusive必须为FALSE;参数bReadOnly规定连接是否是只读的;,OpenEx,参数lpszConnect为连接字符串,字符串必须以ODBC开始。如果参数lpszConnect中已经标识了数据源名称,则lpszDSN=NULL;参数bUseCursorLib指定是否装载光标库。,Close函数,Close函数用于关闭数据源连

17、接,函数原形为:virtual void Close();,GetConnect函数,GetConnect函数用于返回连接CDatabase对象和数据源的ODBC连接字符串,函数原形为:const String,GetDatabaseName函数,GetDatabaseName函数用于返回正在使用的数据库名称,函数原形为:CString GetDatabaseName();,IsOpen函数,IsOpen函数用于得到CDatabase对象是否正在与数据源连接的信息,函数原形为:BOOL IsOpen();,CanUpdate函数,CanUpdate函数用于得到CDatabase对象是否被更新,

18、函数原形为:BOOL CanUpdate();,CanTransact函数,CanTransact函数用于得到CDatabase对象是否支持事务处理,函数原形为:BOOL CanTransac();,CRecordset类,CRecordset类主要用来与数据库进行交互。类中封装了对一个数据记录的处理,如添加、修改、删除、更新等操作。CRecordset类常用成员函数包括CRecordset构造函数、Open函数等,下面分别进行讲解。,CRecordset类,CRecordset构造函数 Open函数 Close函数 Update函数 Requery函数,CRecordset类,AddNew函

19、数 Delete函数 Edit函数 CancelUpdate函数 MoveFirst函数,CRecordset类,MoveLast函数 MoveNext函数 MovePrev函数 Move函数 GetRecordCount函数,CRecordset类,GetTableName函数GetSQL函数 IsBOF函数 IsEOF函数 IsDelete函数,CRecordset构造函数,在处理数据库的记录集之前,需要为CRecordset对象打开记录集。CRecordset类提供了Open函数用于打开记录集,但在打开之前,首先要构造CRecordset对象,用到CRecordset的构造函数,函数原形

20、为:CRecordset(CDatabase*pDatabase=NULL);,Open函数,用于为CRecordset对象打开记录集,函数原形为:virtual BOOL Open(UINT nOpenType=AFX_DB_USE_DEFAULT_TYPE,LPCTSTR lpszSQL=NULL,DWORD dwOptions=none);throw(CDBException,CMemoryException);,Open函数,其中各参数说明如下:参数nOpenType:标识打开记录集的方式,用户可以选择默认的AFX_DB_USE_DEFAULT_TYPE,也可选择如下值:,Open函数

21、,CRecordset:dynaset:记录集使用键集驱动记录集,可以双向滚动记录。记录的成员和顺序在打开时决定,但在读取过程中,当其他应用程序对数据源进行修改时,记录集可以得到修改。,Open函数,CRecordset:snapshot:静态记录集,可双向滚动记录,数据记录在打开时决定,无法得到其他程序对数据源的修改。,Open函数,CRecordset:dynamic:可双向滚动记录,在获取操作中可以得到其他应用程序对数据源的修改。但不是所有ODBC驱动程序都支持这种类型。CRecordset:forwardOnly:只渎类型,只能前向滚动记录。,Open函数,参数lpszSQL:用于规定

22、打开记录集的限制条件,支持SQL中的SELECT语句。参数dwOptions:为打开方式,可选值可参考CDatabase类OpenEx函数中对应参数取值。,Close函数,Close函数用于关闭记录集,函数原形为:virtual void Close();,Update函数,用于将AddNew和Edit函数执行后对记录集的修改进行更新,保存到数据源中,函数原形为;virtual void Update();throw(CDBException);,Requery函数,用于重新刷新记录集。调用该函数后,记录集将获得从数据源中重新获取的数据而重建记录集,所有相关的应用程序进行的修改将反应在新的记录

23、集上,函数原形为:virtual void Requery();throw(CDBException);,AddNew函数,用于向记录集中添加一条新的空白记录,插入数据库的末尾。用户可以通过修改成员变量的值在空白记录中写入数据,然后调用Update函数更新数据库。函数原形为:virtual void AddNew();throw(CDBException);,Delete函数,用于删除当前记录,记录集指针移动到下一条记录,函数原形为:virtual void Delete();throw(CDBException);,Edit函数,用于编辑记录集中的当前记录,调用此函数后,可对数据成员变量进行

24、修改,函数原形为:virtual void Edit();throw(CDBException,CMemoryException);,CancelUpdate函数,与Update函数功能相反,CancelUpdate函数用于取消Edit和AddNew函数进行的更新操作,函数原形为;virtual void CancelUpdate();,MoveFirst函数,将当前位置移动到开始位置,函数原形为:void MoveFirst();throw(CDBException,CMemoryException);,MoveLast函数,将当前位置移动到末尾位置,函数原形为:void MoveLast(

25、);throw(CDBException,CMemoryException);,MoveNext函数,将当前位置向前移动一个记录位置,函数原形为:void MoveNext();throw(CDBException,CMemoryException);,MovePrev函数,将当前位置向后移动一个记录位置,函数原形为:void MovePrev();throw(CDBException,CMemoryException);,Move函数,用于移动记录集指针到指定位置,函数原形为:void Move(long nRows,WORD wFetchType=SQL_FETCH_RELATIVE);t

26、hrow(CDBException,CMemoryException);参数nRows:为移动的记录数,正值为向记录集末尾移动,负值为向记录集开始位置移动。为0,刷新当前记录。,Move函数,参数wFetchTyp:e标识了移动的方式,可取的值为:SQL_FETCH_RELATIVE:默认方式,以nRows值为相对当前位置的移动。SQL_FETCH_NEXT:忽略nRows,等于MoveNext函数。SQL_FETCH_PRIOR:忽略nRows,等于MovePrev函数。,Move函数,SQL_FETCH_FIRST:忽略nRows,等于MoveFirst函数。SQL_FETCH_LAST:

27、忽略nRows,等于MoveLast函数。SQL_FETCH_ABSOLUTE:移动到绝对位置为nRows的记录,记录起始位置为0。取负值,表示从记录集末尾开始计算记录数。SQL_FETCH_BOOKMARK:移动到书签位置。,GetRecordCount函数,用于获得记录集中记录的条目数,函数原形为:Long GetRecordCount();,GetTableName函数,用于获得记录集对应的数据库表名称,函数原形为:Const CString,GetSQL函数,用于获得记录集所使用的SQL语句,函数原形为:Const CString,IsBOF函数,用于判断当前记录集指针的位置是否已到达

28、记录集的起始位置,函数原形为:BOOL IsBOF();,IsEOF函数,用于判断当前记录集指针的位置是否已到达记录集的最后一条记录的位置,函数原形为:BOOL IsEOF();,IsDelete函数,用于判断当前记录集指针的位置是否指向一个已经被删除的记录位置,函数原形为:BOOL IsDelete();,CRecordView类,CRecordView类对象是一个视图,从CFormView类派生而来,能够在控件中显示数据库中的记录。CRecordView对象使用对话框数据交换机制(DDX)和记录字段交换机制(RFX)来实现控件和记录集字段之间的数据移动。,CRecordView类,除此之外

29、,CRecordView对象自动为用户提供了记录集指针的移动和记录更新的操作。下面介绍CRecordView类常用的成员函数。CRecordView构造函数 OnMove函数,CRecordView构造函数,函数原形为:CRecordView(LPTSTR lpszTemplateName);CRecordView(UINT nIDTemplate);参数lpszTemplateName指定视图对象的对话框模板资源的名称;参数nIDTemplate指定视图对象的对话框模板资源的ID值。,OnMove函数,用于移动记录集的当前指针,函数原形为:virtual BOOL OnMove(UINT n

30、IDMoveCommand);throw(CDBException);参数nIDMoveCommand指定指针移动的方式,可取的值有:,OnMove函数,ID_RECORD_FIRST:移向记录集的第一条记录。ID_RECORD_LAST:移向记录集的最后一条记录。ID_RECORD_NEXT:移向记录集的下一条记录。ID_RECORD_PREV:移向记录集的上一条记录。,应 用 实 例,本节以一个实例学习如何利用MFC 提供的ODBC相关类进行数据库的操作。通过前面在DSN中建立的ODBC数据源“addressbook”,利用Visual C+建立数据交互界面,完成对“addressbook

31、”数据库记录的添加、删除、修改等操作,实现通信录信息的删除、修改等功能。,应 用 实 例,对数据库操作的支持可以利用Visual C+6.0提供的数据库支持功能,首先建立一个支持ODBC数据库的单文档工程文件。建立一个带有ODBC数据库支持功能的单文档界面的工程文件 设计用户操作主界面,应 用 实 例,实现通信录信息浏览功能 实现通信录信息添加功能 实现通信录信息删除功能 实现通信录成绩修改功能,建立一个带有ODBC数据库支持功能的单文档界面的工程文件,本节将建立一个带有ODBC数据库支持功能的单文档界面的工程文件(光盘:第9章应用实例)。,设计用户操作主界面,上小节中已经建立了一个带有数据库

32、支持功能的单文档界面的工程文件,系统自动生成了一个名为“IDD_CHAP9A_FORM”的对话框,运行后自动显示该对话框。下面就利用该对话框作为用户操作主界面对它进行设计。,设计用户操作主界面,用户操作主界面下包含:通信录信息浏览、通信录信息删除、通信录信息添加和通信录信息修改4个交互功能,可以利用界面主菜单中提供的“记录”菜单项的功能浏览数据。添加、删除、修改操作通过3个按钮实现。数据的显示、输入通过编辑框进行。,控 件 说 明,控 件 说 明,实现通信录信息浏览功能,建立工程文件时,系统菜单中已经自动生成“记录”菜单项,其中包含“第一个记录”、“前一个记录”、“下一个记录”、“最后一个记录

33、”4个子菜单项,其ID分别对应为“ID_RECORD_FIRST”、“ID_RECORD_PREV”、“ID_RECORD_NEXT”、“ID_RECORD_LAST”。,实现通信录信息浏览功能,下面就利用这4个子菜单项完成对通信录信息的浏览功能,并将结果在主操作界面的“成绩浏览”功能区中显示出来。添加成员变量 添加成员函数修改成员函数函数体的内容调试运行,实现通信录信息添加功能,前面已经实现了通信录信息的浏览功能,通过以上操作用户可熟悉如何打开数据库表并浏览数据库记录的知识,下面学习如何在数据库表中增加一条新的记录,这里以向通信录增加新信息为例具体介绍实现此功能的方法。,实现通信录信息添加功

34、能,添加相关成员函数 修改函数函数体内容 调试运行功能,添加相关成员函数,修改函数函数体内容,修改“OnAddnew”函数体内容。,实现通信录信息删除功能,添加相关成员函数修改函数的函数体内容 调试运行功能区,实现通信录成绩修改功能,对数据库表中的记录有时也需要进行修改,如通信录中某人的手机号码或通信地址等信息发生变更后后,使用删除整条信息然后再添加的方法时,其工作效率不高,因此,我们可运用数据库表记录操作中的修改功能实现局部信息修改的方法完成,下面仍以在通信录中修改记录为例进行介绍。,实现通信录成绩修改功能,添加相关成员函数 修改成员函数函数体内容 调试运行功能区 到这里,就完成了一个可以进

35、行信息浏览、添加、删除、修改的通信录信息操作系统的全部编程工作,通过功能块分块设计与调试后,系统即能实现规定的功能。,上 机 练 习,本次上机练习将编写一个可连续增加20个记录的应用程序(光盘:第9章上机练习)。编写时应该先建立一个空白Access数据库“testdb”(光盘:第9章testdb.mdb),数据库表名为“testdata”,其中包含一个“data”字段。要求通过应用程序中的“添加”按钮,为字段“data”增加20个连续的记录,“data”对应的值为019。,连续增加20条记录程序的运行结果,习 题,建立一个只含有一个字段“data”的数据库表,用户预先输入一定数目的记录,然后求“data”值的平均值。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号