第13章-数据库应用程序的开发PPT参考课件.ppt
《第13章-数据库应用程序的开发PPT参考课件.ppt》由会员分享,可在线阅读,更多相关《第13章-数据库应用程序的开发PPT参考课件.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第第13章章 数据库应用程序的开发数据库应用程序的开发 213.1有关数据库的基础知识有关数据库的基础知识 现有的数据库软件有很多,如大型数据库现有的数据库软件有很多,如大型数据库Oracle、SQL Server,小数据库,小数据库Access等,等,都支持关系模型都支持关系模型数据库数据库模型模型层次模型层次模型网状模型网状模型关系模型关系模型面向对象模型面向对象模型313.2 ODBC介绍和引用介绍和引用 413.2.1 ODBC简介简介 MSMS推推出出了了Open Open Database Database ConnectivityConnectivity,简简称称ODBCODB
2、C。它它包包含含访访问问不不同同数数据据库库所所要要求求的的ODBCODBC驱驱动动程程序序。只只要要调调用用ODBCODBC所所支支持持的的函函数数,动态链接到不同的驱动程序上即可。动态链接到不同的驱动程序上即可。一一个个基基于于ODBCODBC的的应应用用程程序序对对数数据据库库的的操操作作不不依依赖赖任任何何DBMSDBMS,不不直直接接与与DBMSDBMS打打交交道道,所所有有的的数数据据库库操操作作由由对对应应的的DBMSDBMS的的ODBCODBC驱驱动动程程序序完完成成。也也就就是是说说,不不论论是是OracleOracle、SQL SQL ServerServer还还是是Acc
3、essAccess数数据据库库,均均可可用用ODBC ODBC APIAPI进进行行访访问问。由由此此可可见见,ODBCODBC的的最最大大优优点点是是能能以以统统一一的的方方式式处理所有的数据库。处理所有的数据库。5 ODBC数数据据源源控控制制台台就就是是Windows系系统统管管理理数数据据源源的的控控制制台台,所所有有的的数数据据库库驱驱动动,以以及及数数据据源源登登记记都都要要在在此此发发布布,并并向向系系统统发发出出请请求。求。通通过过使使用用ODBC API 和和MFC ODBC 类类,可可以以访访问问任任何何数数据据资资源源。只只要要应应用用程程序序的的用用户户的的终终端端机机
4、器器上上有有ODBC的的驱驱动动,都都可可以以访访问问任任何何地地方的数据源。方的数据源。ODBC是一种接口,它是通过相应的各个是一种接口,它是通过相应的各个数据库的数据库的ODBC驱动来访问各种数据库中的数驱动来访问各种数据库中的数据。使用据。使用ODBC,能够使应用程序独立于数据,能够使应用程序独立于数据库的硬件环境,库的硬件环境,ODBC提供的提供的API函数独立于函数独立于数据库管理系统。数据库管理系统。6ODBC 是是Microsoft的的Windows系系统统下下的的数数据据库库服服务务的的一一部分。它是由下面几个部分构成的:部分。它是由下面几个部分构成的:ODBC API:包包含
5、含在在一一个个动动态态库库中中的的函函数数集集合合、一一个个错错误误代代码码的的集集合合、一一个个标标准准的的SQL语语句句集集合合,用用来来调用调用DBMS中的数据。中的数据。ODBC Driver Manager:一一个个动动态态库库文文件件(ODBC32.DLL)来来加加载载ODBC驱驱动动,这这个个DLL对对你你的的应应用用程程序序是是透透明明的。的。ODBC database drivers:由由一一个个或或是是多多个个DLL构构成成,其中含有其中含有ODBC API,这些,这些DLL由其拥有者由其拥有者DBMS调用。调用。ODBC Cursor Library:这也是一个动态连接库
6、文件。这也是一个动态连接库文件。ODBC Administrator:这是一个:这是一个ODBC控制台,用来控制台,用来管理不同的数据源。管理不同的数据源。713.2.2 MFC对对ODBC的封装的封装 813.2.3 如何访问数据库如何访问数据库 建立建立ODBC数据源数据源 连接数据源连接数据源 选择和处理记录选择和处理记录 数据库应用程序中的文档和视图数据库应用程序中的文档和视图 访问数访问数据库据库913.2.4 在数据库应用程序中常在数据库应用程序中常用的几个类用的几个类 1 CRecordView类类 一个一个CRecordView对象就是用一个视图对象就是用一个视图中的控件来显示
7、数据库中的记录。中的控件来显示数据库中的记录。CRecordView类使用了动态数据交换类使用了动态数据交换(DDX)和数据库交换()和数据库交换(RFX),在视图上),在视图上的控件和数据源中的数据库中进行数据交的控件和数据源中的数据库中进行数据交换。换。AppWizard 生成生成CRecordView和和CRecordset类,类,并和相应的数据源关联。并和相应的数据源关联。10【例例13-113-1】创创建建一一个个数数据据库库应应用用程程序序,可可以显示以显示AccessAccess数据库表中的记录。数据库表中的记录。11步骤:步骤:1.用用AppWizard来生成一个单文档的来生成
8、一个单文档的ODBC工程文件工程文件 12选择已创建选择已创建好的数据库好的数据库My_Access_db.mdb表单表单 13用用ClassWizard给相应的给相应的Edit Box连接变量,连接变量,注意,在注意,在Add Member Variable 对话框中的对话框中的下拉组合框中已经有了相应表中的字段,下拉组合框中已经有了相应表中的字段,只要选中相应的字段就可以了只要选中相应的字段就可以了 142 CRecordset类类 为了能够处理各种的数据库,最好从类为了能够处理各种的数据库,最好从类CRecordset派生出一个子类来。数据库从派生出一个子类来。数据库从数据源读取数据后,
9、可以做以下的工作:数据源读取数据后,可以做以下的工作:翻阅所有的记录。翻阅所有的记录。修改记录,设定锁定状态。修改记录,设定锁定状态。挑选有用的记录。挑选有用的记录。给数据库排序。给数据库排序。给给定定参参数数,让让数数据据库库在在运运行行的的时时候候自自动动选择数据。选择数据。153 CDatabase类类 CDatabase在在afxdb.h中定义。其对象是用来中定义。其对象是用来连接一个数据源的。连接一个数据源的。为了使用为了使用CDatabase对象,需调用构造函数,对象,需调用构造函数,并调用并调用OpenEx或是或是Open函数,这将会打开一函数,这将会打开一个连接。个连接。当构造
10、一个当构造一个CDatabase类完成后,可以向类完成后,可以向CRecordset类的对象传递这个类的对象传递这个CDatabase类的类的指针。连接数据源结束时,必须用指针。连接数据源结束时,必须用Close函数函数关闭这个对象。关闭这个对象。164 RFX RFX(Record Field Exchange)是支持应用程序的是支持应用程序的一个交换机制,当从一个交换机制,当从CRecordset 类派生一个类,类派生一个类,在交换数据的时候没有选择大容量交换的方在交换数据的时候没有选择大容量交换的方式(式(Bulk RFX)时,)时,RFX机制将在数据交换中机制将在数据交换中起作用。起作
11、用。RFX 在视图和数据源之间自动交换数据,由在视图和数据源之间自动交换数据,由于一次交换的数据可能不止一个,为此可能于一次交换的数据可能不止一个,为此可能要多次调用要多次调用DoFieldExchange 函数,同时它也函数,同时它也是应用程序框架和是应用程序框架和ODBC交流的媒介。交流的媒介。RFX机制能够安全的通过调用机制能够安全的通过调用(例如例如ODBC 函函数数SQLBindCol)来保存用户的工作。来保存用户的工作。17下面代码就是下面代码就是【例例13-1】工程文件中工程文件中AppWizard自动自动加入的加入的RFX代码,见代码,见粗斜体粗斜体部分:部分:void COD
12、BCSet:DoFieldExchange(CFieldExchange*pFX)/AFX_FIELD_MAP(CODBCSet)pFX-SetFieldType(CFieldExchange:outputColumn);RFX_Long(pFX,_T(书籍书籍ID),m_ID);RFX_Text(pFX,_T(作者作者),m_column1);RFX_Text(pFX,_T(出版社出版社),m_column2);RFX_Text(pFX,_T(价格价格),m_column3);/AFX_FIELD_MAP 18函数函数DoFieldExchange 是是RFX机制的中枢,任何时候应用机制的中
13、枢,任何时候应用框架需要从数据源到数据库或是从数据库到数据源,框架需要从数据源到数据库或是从数据库到数据源,都要调用都要调用DoFieldExchange 函数。函数。下面是下面是CRecordset派生类的头文件,其中关于派生类的头文件,其中关于RFX机机制的部分已经用制的部分已经用粗斜体粗斜体显示:显示:class CODBCSet:public CRecordset /Field/Param Data/AFX_FIELD(CODBCSet,CRecordset)longm_ID;CStringm_column1;CStringm_column2;CStringm_column3;/AFX
14、_FIELD/Overrides/ClassWizard generated virtual function overrides/AFX_VIRTUAL(CODBCSet)public:virtualvoidDoFieldExchange(CFieldExchange*pFX);/RFXsupport/AFX_VIRTUAL ;195 CDBException CDBException是用来处理从其它是用来处理从其它ODBC类传类传过来的异常情况的。这个类一般是和关键字过来的异常情况的。这个类一般是和关键字CATCH连用的。同样的用户也可以用全局函连用的。同样的用户也可以用全局函数数AfxT
15、hrowDBException抛出一个异常情况抛出一个异常情况 m_nRetCode:它包含了一个结构体它包含了一个结构体RETCODE,里面,里面包含了包含了ODBC的错误信息的描述。的错误信息的描述。m_strError:包含一个描叙异常情况的字符串。包含一个描叙异常情况的字符串。m_strStateNativeOrigin:包含描述异常情况的字符串包含描述异常情况的字符串m_strStateNativeOrigin;如果变量包含多个错误的描;如果变量包含多个错误的描述,错误会分行显示。述,错误会分行显示。CDBException类类的成员变量的成员变量 20【例例13-2】在在【例例13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 数据库 应用程序 开发 PPT 参考 课件
限制150内