《visual-c--.net程序设计教程和上机指导》第11章:数据库编程课件.ppt
《《visual-c--.net程序设计教程和上机指导》第11章:数据库编程课件.ppt》由会员分享,可在线阅读,更多相关《《visual-c--.net程序设计教程和上机指导》第11章:数据库编程课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第11章章 数据库编程数据库编程 教学提示:在这一章中,主要向读者介绍数据库的基本概念、数教学提示:在这一章中,主要向读者介绍数据库的基本概念、数据库编程的常用技术以及结合数据库操作的实例,使读者能在据库编程的常用技术以及结合数据库操作的实例,使读者能在Visual C+.NET开发环境下掌握对数据库操作的方法。本章将重点介绍数据开发环境下掌握对数据库操作的方法。本章将重点介绍数据库的访问技术,如库的访问技术,如ODBC技术、技术、ADO技术,还介绍了如何配置数据源技术,还介绍了如何配置数据源等。学习完这些内容后,相信读者对等。学习完这些内容后,相信读者对Visual C+.NET环境下的数
2、据库环境下的数据库编程将会有一个比较全面的了解。编程将会有一个比较全面的了解。教学目标:掌握数据库的基本概念;掌握数据库编程技术的使用;教学目标:掌握数据库的基本概念;掌握数据库编程技术的使用;掌握注册数据源的方法;通过上机实践,初步掌握上述内容的灵活运掌握注册数据源的方法;通过上机实践,初步掌握上述内容的灵活运用。用。11.1 数据库基本概念数据库基本概念11.1.1 数据库、数据库、DBMS和和SQL概念概念11.1.2 数据库的几种访问技术数据库的几种访问技术11.1.1 数据库、数据库、DBMS和和SQL概念概念 数据库是数据的集合,它由一个或多个表组成。每一个表中都存储数据库是数据的
3、集合,它由一个或多个表组成。每一个表中都存储了对一类对象的数据描述,了对一类对象的数据描述,表表11.1就是一个典型的表。表的每一列描述就是一个典型的表。表的每一列描述了对象的一个属性,如了对象的一个属性,如ID、NAME等,而表的每一行则是对一个对象的等,而表的每一行则是对一个对象的具体描述。一般将表中的一行称作记录具体描述。一般将表中的一行称作记录(record)或行或行(row),将表的每一,将表的每一列称作字段列称作字段(field)或列或列(column)。数据库通常还包括一些附加结构用来。数据库通常还包括一些附加结构用来维护数据。现在普遍使用的一种数据库就是关系数据库。在关系数据库
4、维护数据。现在普遍使用的一种数据库就是关系数据库。在关系数据库中,数据的基本单位是关系,关系就是一张二维表,数据按行列有规则中,数据的基本单位是关系,关系就是一张二维表,数据按行列有规则的排列、组织。的排列、组织。返回表11.1 表的例子IDNAMEBIRTHDAYSEX1小李2001.12.07男2小张1980.11.05女3小王1984.12.08男返回11.1.2 数据库的几种访问技术数据库的几种访问技术 Visual C+.NET提供了多种访问数据库技术,如下所示:提供了多种访问数据库技术,如下所示:ODBC(Open DataBase Connectivity)MFC ODBC(Mi
5、crosoft 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是基于文件的
6、,所以在创建一个是基于文件的,所以在创建一个CArchive对象之前必对象之前必须要打开一个文件,须要打开一个文件,CArchive构造函数的第一个参数就是文件指针,其构造函数的第一个参数就是文件指针,其原型如下:原型如下:CArchive(CFile*pFile,UINT nMode,int nBufSize=4096,void*lpBuf=NULL);返回11.2.2 CDatabase类的使用类的使用 函数函数CArchive:Close()用来关闭用来关闭CArchive,在关闭之前要把缓冲,在关闭之前要把缓冲区中的所有数据存入文件,关闭之后中断区中的所有数据存入文件,关闭之后中断CA
7、rchive对象与文件的联对象与文件的联系。当关闭后,不能用它进行任何读写操作。必须先关闭系。当关闭后,不能用它进行任何读写操作。必须先关闭CArchive对象,再关闭与之相联系的文件,否则会出错;换言之,在关闭一对象,再关闭与之相联系的文件,否则会出错;换言之,在关闭一个文件之前必须关闭与之相连的所有个文件之前必须关闭与之相连的所有CArchive对象。对象。返回11.2.3 CRecordset类的使用类的使用 CRecordset类代表一个记录集。该类是类代表一个记录集。该类是MFC的的ODBC类中最重要、类中最重要、功能最强大的类。功能最强大的类。1.动态集、快照、光标和光标库动态集、
8、快照、光标和光标库2.域数据成员与数据交换域数据成员与数据交换3.记录集的建立记录集的建立4.Requery成员函数成员函数5.记录的过滤和排序记录的过滤和排序6.滚动记录滚动记录7.修改记录修改记录8.添加记录添加记录9.删除记录删除记录返回1.动态集、快照、光标和光标库动态集、快照、光标和光标库 在多任务操作系统或网络环境下,多个用户可以共享同一个数据源。在多任务操作系统或网络环境下,多个用户可以共享同一个数据源。共享数据的一个主要问题是如何协调各个用户对数据源的修改。共享数据的一个主要问题是如何协调各个用户对数据源的修改。记录集主要分为快照记录集主要分为快照(Snapshot)和动态集和
9、动态集(Dynaset)两种,两种,CRecordset类类对这两者都支持。这两种记录集的不同表现在它们对别的应用改变数据对这两者都支持。这两种记录集的不同表现在它们对别的应用改变数据源记录采取了不同的处理方法。源记录采取了不同的处理方法。快照型记录集提供了对数据的静态视图。快照是个很形象的术语,快照型记录集提供了对数据的静态视图。快照是个很形象的术语,就好象对数据源的某些记录照了一张照片一样。就好象对数据源的某些记录照了一张照片一样。动态集提供了数据的动态视图,当别的用户修改或删除了记录集中动态集提供了数据的动态视图,当别的用户修改或删除了记录集中的记录时,会在动态集中反映出来,当滚动到修改
10、过的记录时,对其所的记录时,会在动态集中反映出来,当滚动到修改过的记录时,对其所作的修改会立即反映到动态集中。作的修改会立即反映到动态集中。光标库光标库(Cursor Library)是处于是处于ODBC驱动程序管理器和驱动程序之驱动程序管理器和驱动程序之间的动态链接库间的动态链接库(ODBCCR32.DLL),光标库的主要功能是支持快照以及为,光标库的主要功能是支持快照以及为底层驱动程序提供双向滚动能力。底层驱动程序提供双向滚动能力。返回2.域数据成员与数据交换域数据成员与数据交换 CRecordset类代表一个记录集。用户一般需要创建一个类代表一个记录集。用户一般需要创建一个CRecord
11、set的派生类,为派生的记录集类创建一批数据成员,这些数的派生类,为派生的记录集类创建一批数据成员,这些数据成员与记录的各字段相对应,被称为字段数据成员或域数据成员。据成员与记录的各字段相对应,被称为字段数据成员或域数据成员。域数据成员用来保存某条记录的各个字段,它们是程序与记录之间的域数据成员用来保存某条记录的各个字段,它们是程序与记录之间的缓冲区。域数据成员代表当前记录,当在记录集中滚动到某一记录时,缓冲区。域数据成员代表当前记录,当在记录集中滚动到某一记录时,框架自动地把记录的各个字段复制到记录集对象的域数据成员中。当框架自动地把记录的各个字段复制到记录集对象的域数据成员中。当用户要修改
12、当前记录或增加新记录时,程序先将各字段的新值放入域用户要修改当前记录或增加新记录时,程序先将各字段的新值放入域数据成员中,然后调用相应的数据成员中,然后调用相应的CRecordset 成员函数,把域数据成员成员函数,把域数据成员设置到数据源中。设置到数据源中。返回3.记录集的建立记录集的建立 要建立记录集,首先要构造一个要建立记录集,首先要构造一个CRecordset派生类对象,然后调派生类对象,然后调用用Open成员函数查询数据源中的记录并建立记录集。在成员函数查询数据源中的记录并建立记录集。在Open函数中,函数中,可能会调用可能会调用GetDefaulConnect和和 GetDefau
13、ltSQL函数。函数的声明为:函数。函数的声明为:CRecordset m_RecordSet_Name(CDatabase*pDatabase=NULL);返回4.Requery成员函数成员函数 建立记录集后,用户可以随时调用建立记录集后,用户可以随时调用Requery成员函数来重新查询成员函数来重新查询和建立记录集。和建立记录集。Requery有两个重要用途:有两个重要用途:使记录集能反映用户对数据源的改变。使记录集能反映用户对数据源的改变。按照新的过滤或排序方法查询记录并重新建立记录集。按照新的过滤或排序方法查询记录并重新建立记录集。在调用在调用Requery之前,可调用之前,可调用Ca
14、nRestart来判断记录集是否支持来判断记录集是否支持Requery操作。要记住操作。要记住Requery只能在成功调用只能在成功调用Open后调用,所以程后调用,所以程序应调用序应调用IsOpen来判断记录集是否已建立。函数声明为:来判断记录集是否已建立。函数声明为:virtual BOOL Requery();throw(CDBException,CmemoryException);返回返回TRUE表明记录集建立成功,否则返回表明记录集建立成功,否则返回FALSE。若函数内部出错。若函数内部出错则产生异常。则产生异常。返回5.记录的过滤和排序记录的过滤和排序 CRecordset 类有两
15、个公共数据成员类有两个公共数据成员m_strFilter和和m_strSort用来用来设置对记录的过滤和排序。在调用设置对记录的过滤和排序。在调用Open或或Requery前,如果在这两个前,如果在这两个数据成员中指定了过滤或排序,那么数据成员中指定了过滤或排序,那么Open和和Requery将按这两个数据将按这两个数据成员指定的过滤和排序来查询数据源。成员指定的过滤和排序来查询数据源。返回6.滚动记录滚动记录 CRecordset提供了几个成员函数用来在记录集中滚动,如下所示。提供了几个成员函数用来在记录集中滚动,如下所示。当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容复当用这些
16、函数滚动到一个新记录时,框架会自动地把新记录的内容复制到域数据成员中。制到域数据成员中。void MoveNext();void MovePrev();void MoveFirst();void MoveLast();void SetAbsolutePosition(long nRows);返回7.修改记录修改记录 要修改当前记录,应该按下列步骤进行:要修改当前记录,应该按下列步骤进行:(1)调用调用Edit成员函数。调用该函数后就进入了编辑模式,程序可以成员函数。调用该函数后就进入了编辑模式,程序可以修改域数据成员。修改域数据成员。(2)设置域数据成员的新值。设置域数据成员的新值。(3)调用
17、调用Update完成编辑。完成编辑。Update把变化后的记录写入数据库并结束把变化后的记录写入数据库并结束编辑模式。编辑模式。返回8.添加记录添加记录 要向记录集中添加新的记录,应该按下列步骤进行:要向记录集中添加新的记录,应该按下列步骤进行:(1)调用调用AddNew成员函数。调用该函数后就进入了添加模式,程序成员函数。调用该函数后就进入了添加模式,程序可以把所有的域数据成员都设置成可以把所有的域数据成员都设置成NULL。(2)设置域数据成员。设置域数据成员。(3)调用调用Update。Update把域数据成员中的内容作为新记录写入数把域数据成员中的内容作为新记录写入数据源,从而结束添加。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- visual-c-.net程序设计教程和上机指导 visual net 程序设计 教程 上机 指导 11 数据库 编程 课件
限制150内