您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 《Visual C++.NET程序设计教程与上机指导》第11章:数据库编程
第11章数据库编程教学提示:在这一章中,主要向读者介绍数据库的基本概念、数据库编程的常用技术以及结合数据库操作的实例,使读者能在VisualC++.NET开发环境下掌握对数据库操作的方法。本章将重点介绍数据库的访问技术,如ODBC技术、ADO技术,还介绍了如何配置数据源等。学习完这些内容后,相信读者对VisualC++.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表的例子IDNAMEBIRTHDAYSEX1小李2001.12.07男2小张1980.11.05女3小王1984.12.08男返回11.1.2数据库的几种访问技术VisualC++.NET提供了多种访问数据库技术,如下所示:●ODBC(OpenDataBaseConnectivity)●MFCODBC(MicrosoftFoundationClassesODBC)●DAO(DataAccessObject)●OLEDB(ObjectLinkandEmbeddingDataBase)●ADO、ADO.NET(ActiveXDataObject)返回11.2ODBC编程技术的使用11.2.1MFC的主要ODBC类概述11.2.2CDatabase类的使用11.2.3CRecordset类的使用11.2.4CRecordView类的使用11.2.1MFC的主要ODBC类概述因为CArchive是基于文件的,所以在创建一个CArchive对象之前必须要打开一个文件,CArchive构造函数的第一个参数就是文件指针,其原型如下:CArchive(CFile*pFile,UINTnMode,intnBufSize=4096,void*lpBuf=NULL);返回11.2.2CDatabase类的使用函数CArchive::Close()用来关闭CArchive,在关闭之前要把缓冲区中的所有数据存入文件,关闭之后中断CArchive对象与文件的联系。当关闭后,不能用它进行任何读写操作。必须先关闭CArchive对象,再关闭与之相联系的文件,否则会出错;换言之,在关闭一个文件之前必须关闭与之相连的所有CArchive对象。返回11.2.3CRecordset类的使用CRecordset类代表一个记录集。该类是MFC的ODBC类中最重要、功能最强大的类。1.动态集、快照、光标和光标库2.域数据成员与数据交换3.记录集的建立4.Requery成员函数5.记录的过滤和排序6.滚动记录7.修改记录8.添加记录9.删除记录返回1.动态集、快照、光标和光标库在多任务操作系统或网络环境下,多个用户可以共享同一个数据源。共享数据的一个主要问题是如何协调各个用户对数据源的修改。记录集主要分为快照(Snapshot)和动态集(Dynaset)两种,CRecordset类对这两者都支持。这两种记录集的不同表现在它们对别的应用改变数据源记录采取了不同的处理方法。快照型记录集提供了对数据的静态视图。快照是个很形象的术语,就好象对数据源的某些记录照了一张照片一样。动态集提供了数据的动态视图,当别的用户修改或删除了记录集中的记录时,会在动态集中反映出来,当滚动到修改过的记录时,对其所作的修改会立即反映到动态集中。光标库(CursorLibrary)是处于ODBC驱动程序管理器和驱动程序之间的动态链接库(ODBCCR32.DLL),光标库的主要功能是支持快照以及为底层驱动程序提供双向滚动能力。返回2.域数据成员与数据交换CRecordset类代表一个记录集。用户一般需要创建一个CRecordset的派生类,为派生的记录集类创建一批数据成员,这些数据成员与记录的各字段相对应,被称为字段数据成员或域数据成员。域数据成员用来保存某条记录的各个字段,它们是程序与记录之间的缓冲区。域数据成员代表当前记录,当在记录集中滚动到某一记录时,框架自动地把记录的各个字段复制到记录集对象的域数据成员中。当用户要修改当前记录或增加新记录时,程序先将各字段的新值放入域数据成员中,然后调用相应的CRecordset成员函数,把域数据成员设置到数据源中。返回3.记录集的建立要建立记录集,首先要构造一个CRecordset派生类对象,然后调用Open成员函数查询数据源中的记录并建立记录集。在Open函数中,可能会调用GetDefaulConnect和GetDefaultSQL函数。函数的声明为:CRecordsetm_RecordSet_Name(CDatabase*pDatabase=NULL);返回4.Requery成员函数建立记录集后,用户可以随时调用Requery成员函数来重新查询和建立记录集。Requery有两个重要用途:●使记录集能反映用户对数据源的改变。●按照新的过滤或排序方法查询记录并重新建立记录集。在调用Requery之前,可调用CanRestart来判断记录集是否支持Requery操作。要记住Requery只能在成功调用Open后调用,所以程序应调用IsOpen来判断记录集是否已建立。函数声明为:virtualBOOLRequery();throw(CDBException,CmemoryException);返回TRUE表明记录集建立成功,否则返回FALSE。若函数内部出错则产生异常。返回5.记录的过滤和排序CRecordset类有两个公共数据成员m_strFilter和m_strSort用来设置对记录的过滤和排序。在调用Open或Requery前,如果在这两个数据成员中指定了过滤或排序,那么Open和Requery将按这两个数据成员指定的过滤和排序来查询数据源。返回6.滚动记录CRecordset提供了几个成员函数用来在记录集中滚动,如下所示。当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容复制到域数据成员中。●voidMoveNext();●voidMovePrev();●voidMoveFirst();●voidMoveLast();●voidSetAbsolutePosition(longnRows);返回7.修改记录要修改当前记录,应该按下列步骤进行:(1)调用Edit成员函数。调用该函数后就进入了编辑模式,程序可以修改域数据成员。(2)设置域数据成员的新值。(3)调用Update完成编辑。Update把变化后的记录写入数据库并结束编辑模式。返回8.添加记录要向记录集中添加新的记录,应该按下列步骤进行:(1)调用AddNew成员函数。调用该函数后就进入了添加模式,程序可以把所有的域数据成员都设置成NULL。(2)设置域数据成员。(3)调用Update。Update把域数据成员中的内容作为新记录写入数据源,从而结束添加。返回9.删除记录要删除记录集的当前记录,应该按下面两步进行:(1)调用Delete成员函数。该函数会同时给记录集和数据源中当前记录加上删除标记。注意不要在一个空记录集中调用Delete,否则会产生一个异常。(2)滚动到另一个记录上以跳过删除记录。返回11.2.4CRecordView类的使用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.3Access数据库返回ODBC应用程序不能直接使用数据库,用户必须为要使用的数据库注册数据源。注册数据源的工作由ODBC管理器完成,该管理器位于Windows控制面板的32位ODBC内。下面为Access数据库student.mdb注册数据源。(1)打开控制面板,打开管理工具,双击【数据源(ODBC)】图标,则会显示一个【ODBC数据源管理器】,如图11.4所示。在管理器中选择【用户DSN】选项卡,该选项卡只对用户可见,而且只能在用户当前机器使用。返回(2)单击【添加】按钮,则会弹出一个【创建新数据源】对话框。在该对话框中选择MicrosoftAccessDriver(*.mdb),然后单击【完成】按钮,如图11.5所示。(3)接下来会显示一个ODBCMicrosoftAccess安装对话框,如图11.6所示,该对话框用来把数据库与一个数据源名连接起来。在【数据源名】文本框中输入“MydatabaseforVC”,然后单击【选择…】按钮,在随后弹出的对话框中找到并选择student.mdb。连续单击【确定】按钮后,一个名为MydatabayeforVC的新数据源就被注册到了管理器中。返回图11.4ODBC数据源管理器返回图11.5【创建新数据源】对话框返回图11.6【ODBCMicrosoftAccess安装】对话框返回11.3.2创建应用程序本程序具有浏览记录集和修改记录这两个基本功能。现在开始建立应用程序。首先完成程序框架的建立,请按下面几步进行:(1)启动VisualStudio.NET,指定一名为DBSample的MFC工程。(2)选择应用程序类型,按如图11.7所示进行设置。(3)在左侧选择【数据库支持】,如图11.8所示,进行数据库的设置(4)单击【数据源】按钮,在弹出的【选择数据源】对话框中选择【机器数据源】选项卡,并选中MydatabaseforVC数据源,如图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.4DAO编程技术的使用11.4.1如何选择ODBC与DAO11.4.2DAO应用程序的编写11.4.1如何选择ODBC与DAO由于DAO可以访问ODBC数据源,下面几条可以作为DAO替代ODBC的理由:●在某些情况下可获得更好的性能,特别是在访问Microsoft●Jet(MDB)数据库时。●与ODBC兼容。●DAO允许进行数据有效检查。●DAO允许用户说明表与表之间的关系。当然,DAO的出现并不意味着ODBC已经过时了。如果用户的工作必须严格限于
本文标题:《Visual C++.NET程序设计教程与上机指导》第11章:数据库编程
链接地址:https://www.777doc.com/doc-4130884 .html