《VisualC程序设计教程与上机指导》第11章:数据库编程.ppt_第1页
《VisualC程序设计教程与上机指导》第11章:数据库编程.ppt_第2页
《VisualC程序设计教程与上机指导》第11章:数据库编程.ppt_第3页
《VisualC程序设计教程与上机指导》第11章:数据库编程.ppt_第4页
《VisualC程序设计教程与上机指导》第11章:数据库编程.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

第11章 数据库编程,教学提示:在这一章中,主要向读者介绍数据库的基本概念、数据库编程的常用技术以及结合数据库操作的实例,使读者能在Visual C+ .NET开发环境下掌握对数据库操作的方法。本章将重点介绍数据库的访问技术,如ODBC技术、ADO技术,还介绍了如何配置数据源等。学习完这些内容后,相信读者对Visual C+ .NET环境下的数据库编程将会有一个比较全面的了解。,教学目标:掌握数据库的基本概念;掌握数据库编程技术的使用;掌握注册数据源的方法;通过上机实践,初步掌握上述内容的灵活运用。,11.1 数据库基本概念,11.1.1 数据库、DBMS和SQL概念 11.1.2 数据库的几种访问技术,11.1.1 数据库、DBMS和SQL概念,数据库是数据的集合,它由一个或多个表组成。每一个表中都存储了对一类对象的数据描述,表11.1就是一个典型的表。表的每一列描述了对象的一个属性,如ID、NAME等,而表的每一行则是对一个对象的具体描述。一般将表中的一行称作记录(record)或行(row),将表的每一列称作字段(field)或列(column)。数据库通常还包括一些附加结构用来维护数据。现在普遍使用的一种数据库就是关系数据库。在关系数据库中,数据的基本单位是关系,关系就是一张二维表,数据按行列有规则的排列、组织。,返回,表11.1 表的例子,返回,11.1.2 数据库的几种访问技术,Visual C+ .NET提供了多种访问数据库技术,如下所示: ODBC (Open DataBase Connectivity) MFC ODBC(Microsoft Foundation Classes ODBC) DAO (Data Access Object) OLE DB(Object Link and Embedding DataBase) ADO、ADO .NET (ActiveX Data Object),返回,11.2 ODBC编程技术的使用,11.2.1 MFC的主要ODBC类概述 11.2.2 CDatabase类的使用 11.2.3 CRecordset类的使用 11.2.4 CRecordView类的使用,11.2.1 MFC的主要ODBC类概述,因为CArchive是基于文件的,所以在创建一个CArchive对象之前必须要打开一个文件,CArchive构造函数的第一个参数就是文件指针,其原型如下: CArchive(CFile* pFile, UINT nMode, int nBufSize=4096, void* lpBuf=NULL);,返回,11.2.2 CDatabase类的使用,函数CArchive:Close()用来关闭CArchive,在关闭之前要把缓冲区中的所有数据存入文件,关闭之后中断CArchive对象与文件的联系。当关闭后,不能用它进行任何读写操作。必须先关闭CArchive对象,再关闭与之相联系的文件,否则会出错;换言之,在关闭一个文件之前必须关闭与之相连的所有CArchive对象。,返回,11.2.3 CRecordset类的使用,CRecordset类代表一个记录集。该类是MFC的ODBC类中最重要、功能最强大的类。 1. 动态集、快照、光标和光标库 2. 域数据成员与数据交换 3. 记录集的建立 4. Requery成员函数 5. 记录的过滤和排序 6. 滚动记录 7. 修改记录 8. 添加记录 9. 删除记录,返回,1. 动态集、快照、光标和光标库,在多任务操作系统或网络环境下,多个用户可以共享同一个数据源。共享数据的一个主要问题是如何协调各个用户对数据源的修改。 记录集主要分为快照(Snapshot)和动态集(Dynaset)两种,CRecordset类对这两者都支持。这两种记录集的不同表现在它们对别的应用改变数据源记录采取了不同的处理方法。 快照型记录集提供了对数据的静态视图。快照是个很形象的术语,就好象对数据源的某些记录照了一张照片一样。 动态集提供了数据的动态视图,当别的用户修改或删除了记录集中的记录时,会在动态集中反映出来,当滚动到修改过的记录时,对其所作的修改会立即反映到动态集中。 光标库(Cursor Library)是处于ODBC驱动程序管理器和驱动程序之间的动态链接库(ODBCCR32.DLL),光标库的主要功能是支持快照以及为底层驱动程序提供双向滚动能力。,返回,2. 域数据成员与数据交换,CRecordset类代表一个记录集。用户一般需要创建一个CRecordset的派生类,为派生的记录集类创建一批数据成员,这些数据成员与记录的各字段相对应,被称为字段数据成员或域数据成员。 域数据成员用来保存某条记录的各个字段,它们是程序与记录之间的缓冲区。域数据成员代表当前记录,当在记录集中滚动到某一记录时,框架自动地把记录的各个字段复制到记录集对象的域数据成员中。当用户要修改当前记录或增加新记录时,程序先将各字段的新值放入域数据成员中,然后调用相应的CRecordset 成员函数,把域数据成员设置到数据源中。,返回,3. 记录集的建立,要建立记录集,首先要构造一个CRecordset派生类对象,然后调用Open成员函数查询数据源中的记录并建立记录集。在Open函数中,可能会调用GetDefaulConnect和 GetDefaultSQL函数。函数的声明为: CRecordset m_RecordSet_Name(CDatabase* pDatabase=NULL);,返回,4. Requery成员函数,建立记录集后,用户可以随时调用Requery成员函数来重新查询和建立记录集。Requery有两个重要用途: 使记录集能反映用户对数据源的改变。 按照新的过滤或排序方法查询记录并重新建立记录集。 在调用Requery之前,可调用CanRestart来判断记录集是否支持Requery操作。要记住Requery只能在成功调用Open后调用,所以程序应调用IsOpen来判断记录集是否已建立。函数声明为: virtual BOOL Requery ( ); throw ( CDBException, CmemoryException ); 返回TRUE表明记录集建立成功,否则返回FALSE。若函数内部出错则产生异常。,返回,5. 记录的过滤和排序,CRecordset 类有两个公共数据成员m_strFilter和m_strSort用来设置对记录的过滤和排序。在调用Open或Requery前,如果在这两个数据成员中指定了过滤或排序,那么Open和Requery将按这两个数据成员指定的过滤和排序来查询数据源。,返回,6. 滚动记录,CRecordset提供了几个成员函数用来在记录集中滚动,如下所示。当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容复制到域数据成员中。 void MoveNext( ); void MovePrev( ); void MoveFirst( ); void MoveLast( ); void SetAbsolutePosition ( long nRows);,返回,7. 修改记录,要修改当前记录,应该按下列步骤进行: (1) 调用Edit成员函数。调用该函数后就进入了编辑模式,程序可以修改域数据成员。 (2) 设置域数据成员的新值。 (3) 调用Update完成编辑。Update把变化后的记录写入数据库并结束编辑模式。,返回,8. 添加记录,要向记录集中添加新的记录,应该按下列步骤进行: (1) 调用AddNew成员函数。调用该函数后就进入了添加模式,程序可以把所有的域数据成员都设置成NULL。 (2) 设置域数据成员。 (3) 调用Update。Update把域数据成员中的内容作为新记录写入数据源,从而结束添加。,返回,9. 删除记录,要删除记录集的当前记录,应该按下面两步进行: (1) 调用Delete成员函数。该函数会同时给记录集和数据源中当前记录加上删除标记。注意不要在一个空记录集中调用Delete,否则会产生一个异常。 (2) 滚动到另一个记录上以跳过删除记录。,返回,11.2.4 CRecordView类的使用,CRecordView(记录视图)是CFromView的派生类,它提供了一个表单视图来显示当前记录。一个典型的记录视图如图11.2所示,用户可以通过表单视图显示当前记录。通过记录视图,可以修改、添加和删除数据。用户一般需要创建一个CRecordView的派生类并在其对应的对话框模板中加入控件。,图11.2 记录视图,返回,11.3 应用数据库,11.3.1 注册数据源 11.3.2 创建应用程序 11.3.3 添加资源和代码,11.3.1 注册数据源,先建立一个Access数据库,如图11.3所示。为了简便,只包含了一个表,表名为xs,内容也比较简单,将这个Access数据库保存为文件student.mdb。,图11.3 Access数据库,返回,ODBC应用程序不能直接使用数据库,用户必须为要使用的数据库注册数据源。注册数据源的工作由ODBC管理器完成,该管理器位于Windows控制面板的32位ODBC内。下面为Access数据库student.mdb注册数据源。 (1) 打开控制面板,打开管理工具,双击【数据源(ODBC)】图标,则会显示一个【ODBC数据源管理器】,如图11.4所示。在管理器中选择【用户DSN】选项卡,该选项卡只对用户可见,而且只能在用户当前机器使用。,返回,(2) 单击【添加】按钮,则会弹出一个【创建新数据源】对话框。在该对话框中选择Microsoft Access Driver (*.mdb),然后单击【完成】按钮,如图11.5所示。 (3) 接下来会显示一个ODBC Microsoft Access安装对话框,如图11.6所示,该对话框用来把数据库与一个数据源名连接起来。在【数据源名】文本框中输入“My database for VC”,然后单击【选择】按钮,在随后弹出的对话框中找到并选择student.mdb。连续单击【确定】按钮后,一个名为My databaye for VC的新数据源就被注册到了管理器中。,返回,图11.4 ODBC数据源管理器,返回,图11.5 【创建新数据源】对话框,返回,图11.6 【ODBC Microsoft Access安装】对话框,返回,11.3.2 创建应用程序,本程序具有浏览记录集和修改记录这两个基本功能。现在开始建立应用程序。首先完成程序框架的建立,请按下面几步进行: (1) 启动Visual Studio .NET,指定一名为DBSample的MFC工程。 (2) 选择应用程序类型,按如图11.7所示进行设置。 (3) 在左侧选择【数据库支持】,如图11.8所示,进行数据库的设置 (4) 单击【数据源】按钮,在弹出的【选择数据源】对话框中选择【机器数据源】选项卡,并选中My database for VC数据源,如图11.9所示。,返回,(5) 单击【确定】按钮,则会打开一个【登录】对话框,如图11.10所示。如果数据库没有密码,直接单击【确定】按钮即可。 (6) 这时出现选择数据库对象对话框,展开表,选择xs表(图11.11)。单击【确定】按钮退出。 (7) 单击【完成】按钮,建立工程。这时提示可能数据库会有密码,如图11.12所示,这里直接确认,将在下面的介绍中处理这一情况。,返回,图11.7 设置程序类型,返回,图11.8 设置数据库支持,返回,图11.9 选择数据源,返回,图11.10 【登录】对话框,返回,图11.11 选择表,返回,图11.12 密码提示,返回,11.3.3 添加资源和代码,在【资源视图】对话框中选择Dialog,双击展开(图11.13),选中IDD_MYSAMPLE_ FORM打开(图11.14)。按照表11.4所示进行配置。,返回,图11.13 资源列表,返回,图11.14 界面设计,返回,11.4 DAO编程技术的使用,11.4.1 如何选择ODBC与DAO 11.4.2 DAO应用程序的编写,11.4.1 如何选择ODBC与DAO,由于DAO可以访问ODBC数据源,下面几条可以作为DAO替代ODBC的理由: 在某些情况下可获得更好的性能,特别是在访问Microsoft Jet(MDB)数据库时。 与ODBC兼容。 DAO允许进行数据有效检查。 DAO允许用户说明表与表之间的关系。 当然,DAO的出现并不意味着ODBC已经过时了。如果用户的工作必须严格限于ODBC数据源,尤其在开发Client/Server结构的应用程序时,用ODBC有较好的性能。,返回,11.4.2 DAO应用程序的编写,1. 编写MFC DAO应用程序的第一步 2. 数据查看选择 3. 带有DAO的文档和视图 4. DBMS选择,返回,1. 编写MFC DAO应用程序的第一步,若要开始DAO应用程序的编写,必须做出两项基本决定: 希望应用程序内如何显示数据:按窗体方式、按列表方式、按某些其他方式或不显示数据。 希望使用何种数据库管理系统(DBMS)。,返回,2. 数据查看选择,MFC对不同的查看选择提供不同程度的支持: 在窗口中一次显示一个记录。创建一个CDaoRecordView派生类,并将其连接到基于指定表的CDaoRecordset。这使得创建简单的基于窗口的应用程序变得非常容易。 一次显示多个记录,可以相当容易地将CDaoRecordset连接到 CListView或者CTreeView。 在单独的窗口中或是在拆分窗口的窗格中同时显示多个数据视图。,返回,3. 带有DAO的文档和视图,MFC应用程序的最简单结构是管理MFC文档对象中的数据和管理在视图对象中单独显示该数据。但是,并不只限制于此结构。其他选择包括: (1) 使用视图对象,但将文挡作为未使用的附加物处理。 (2) 将数据直接绘制到CFrameWnd派生类的工作区。 (3) 使应用程序以对话框为基础。,返回,4. DBMS选择,DAO基于Microsoft Jet数据库引擎。因此,DAO最适合用于Microsoft Jet(MDB)数据库。DAO也支持访问外部数据库,包括某些可安装的ISAM数据库(数据库引擎可直接读取它)和ODBC数据源。这意味着可以使用DAO编写与DBMS无关的应用程序,目标是任何Microsoft Jet数据库引擎可直接读取的数据库,或者用户有相应ODBC驱动程序的数据源。,返回,11.5 自动注册DSN和创建表,11.5.1 自动注册DSN 11.5.2 用ODBC创建表 11.5.3 用DAO创建表,11.5.1 自动注册DSN,无论是用ODBC还是DAO类,在访问ODBC数据源以前,都必须先注册DSN。通过调用函数SQLConfigDataSource,可以实现自动注册DSN。当然,用DAO可以直接访问一些常用的数据库,

温馨提示

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

评论

0/150

提交评论