C++课件 第14章 数据库编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:48 大小:138KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C++课件 第14章 数据库编程.ppt

C++课件第14章数据库编程.ppt

预览

免费试读已结束,剩余 38 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第14章数据库编程本章主要教学内容14.1.1数据库及数据库管理系统14.1.1数据库及数据库管理系统14.1.2有关数据库编程的几个关键概念14.1.2有关数据库编程的几个关键概念14.1.2有关数据库编程的几个关键概念ODBC的组成:P107图5-2(3)驱动程序管理器:驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。(4)ODBCAPI。(5)ODBC驱动程序:是一些DLL,提供了ODBC和数据库之间的接口。(6)数据源:数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。应用程序14.1.2有关数据库编程的几个关键概念ODBC组成部件之间的关系:ODBCAPI必须通过驱动程序管理器与数据库交换信息,而不能直接访问数据库。应用程序在访问数据源时,需要ODBC驱动程序的支持。14.1.2有关数据库编程的几个关键概念DDX(DialogDataExchange)--对话框数据交换它在对话框的可视控件和成员变量之间建立双向的对应关系,使用户能通过对话框上的控件浏览和修改变量的取值。DDX是数据库编程中数据交换在对话框界面上实现的基础,它更紧密地与视图对象相联系,显现于前台。14.1.3MFC的ODBC类简介1.CDatabase类要建立与数据源的连接,首先应构造一个CDatabase对象,然后再调用CDatabase的Open()成员函数。Open()函数负责建立连接,其函数原型为:1)lpszDSN指定了数据源名。在lpszConnect参数中也可包括数据源名,此时lpszDSN必需为NULL,若在函数中未提供数据源名且使lpszDSN为NULL,则会显示一个数据源对话框,用户可以在该对话框中选择一个数据源。2)bExclusive说明是否独占数据源。由于目前版本的类库还不支持独占方式,故该参数的值应该是FALSE,这说明数据源是被共享的。14.1.3MFC的ODBC类简介4)参数bUseCursorLib若为TRUE,则会装载光标库,否则不装载,快照需要光标库,动态集不需要光标库。若连接成功,函数返回TRUE,若返回FALSE,则说明用户在数据源对话框中按了Cancel按钮。若函数内部出现错误,则框架会产生一个异常。下面是一个调用Open()函数的例子://在文档类中嵌入一个CDatabase对象CDatabasem_db;//连接到一个名为"StudentRegistration"的数据源m_db.Open("StudentRegistration");//在连接数据源的同时指定了用户帐号和口令m_db.Open(NULL,FALSE,FALSE,"ODBC;DSN=StudentRegistration;UID=ZYF;PWD=1234");要从一个数据源中脱离,可调用函数Close()。在脱离后,可以再次调用Open()函数来建立一个新的连接。调用IsOpen()函数可判断当前是否有一个连接,调用GetConnect()可返回当前的连接字符串。需要注意的是CDatabase的析构函数会自动调用Close()函数,所以只要删除了CDatabase对象就可以与数据源脱离。14.1.3MFC的ODBC类简介记录集主要分为快照(Snapshot)和动态集(Dynaset)两种,CRecordset类对这两者都支持。这两种记录集的不同表现在:它们对别的应用程序改变数据源记录时,采取了不同的处理方法。快照型记录集提供了对数据的静态视图。快照是个很形象的术语,就好象对数据源的某些记录照了一张照片一样。当别的用户改变了记录时(包括修改、添加和删除),快照中的记录不受影响,也就是说,快照不反映别的用户对数据源记录的改变。直到调用了CRecordset::Requery重新查询后,快照才会反映变化。对于象产生报告或执行计算这样的不希望中途变动的工作,快照是很有用的。需要指出的是,快照的这种静态特性是相对于别的用户而言的,它会正确反映由本身用户对记录的修改和删除,但对于新添加的记录直到调用Requery后才能反映到快照中。动态集提供了数据的动态视图,当别的用户修改或删除了记录集中的记录时,会在动态集中反映出来:当滚动到修改过的记录时对其所作的修改会立即反映到动态集中,当记录被删除时,MFC代码会跳过记录集中的删除部分。对于其它用户添加的记录,直到调用Requery时,才会在动态集中反映出来。本身应用程序对记录的修改、添加和删除会反映在动态集中。当数据必须是动态的时侯,使用动态集是最适合的。例如,在一个火车票联网售票系统中,显然应该用动态集随时反映出共享数据的变化。14.1.3MFC的ODBC类简介记录视图使用DDX数据交换机制在表