Visual-C++程序设计教程第九章.ppt

上传人(卖家):三亚风情 文档编号:3371156 上传时间:2022-08-24 格式:PPT 页数:69 大小:305KB
下载 相关 举报
Visual-C++程序设计教程第九章.ppt_第1页
第1页 / 共69页
Visual-C++程序设计教程第九章.ppt_第2页
第2页 / 共69页
Visual-C++程序设计教程第九章.ppt_第3页
第3页 / 共69页
Visual-C++程序设计教程第九章.ppt_第4页
第4页 / 共69页
Visual-C++程序设计教程第九章.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

1、第9章 数据库编程9.1 数据库概述n数据库技术是应用数据管理应用的需要而产生,与数据存储技术的发展与应用密切相关。数据库从20世纪60年代中期产生至今,已经经历了三代的演变,目前已经发展成为一个庞大的数据库家族。9.1.1数据库和数据库和DBMSn数据库是数据的集合,它由一个或多个表组成,每一个表中都存储了对一类对象的数据描述和相应性质的数据集合。数据表由列和行构成,所以又称二维数据表。数据表中的每一列描述了对象的一个属性,表的每一行则是对一个对象的具体描述。一般将表中的一行称为记录(record),将每一列称为字段(field)。另外,数据库通常还包括一些附加结构,用来维护数据。n一般情况

2、下,数据库是根据相应的数据模型来分类的,数据模型反映了数据与数据之间的关系。根据数据模型可以将数据库划分为以下3类:层次型数据库、网状型数据库、关系型数据库。9.1.1数据库和数据库和DBMSn计算机数据处理的核心问题是数据管理技术,也就是对数据进行分类、组织、存储、检索和维护的技术。数据管理技术随着计算机软硬件和计算机应用的发展而不断地发展,主要经历了人工管理阶段、文件系统阶段、数据库系统阶段、分布式数据库系统阶段和面向对象数据库系统阶段。n数据库管理系统(DBMS)是数据库的核心,用来定义、管理和处理数据库与应用程序之间的联系,它能支持多个用户同时以最快的速度大量存入或取出数据。现在我们经

3、常使用的数据库管理系统有Microsoft SQL Server,Oracle Server,Microsoft Access,Microsoft Visual Foxpro等。9.1.1数据库和数据库和DBMSn一个数据库系统,一般包括数据、数据库、数据库管理系统、应用程序、数据库系统。其中数据库管理系统是数据库系统的核心,主要功能如下:n数据定义功能:定义数据库的逻辑结构和数据库对象。n数据查询功能:数据库检索。n数据操作功能:数据库的添加与修改。n数据控制功能:数据存取与更新、完整性与安全性。9.1.2结构化查询语言结构化查询语言SQLSQL是Structured Query Langu

4、age(结构化查询语言)的缩写,是关系数据库的标准语言,也是数据库领域使用最广泛的语言。SQL具有以下特点:1.综合统一的语言综合统一的语言 2.非过程化的语言非过程化的语言 3.面向集合的操作方式面向集合的操作方式4.所有关系数据库的公共语言所有关系数据库的公共语言 9.1.2结构化查询语言结构化查询语言SQLSQL语言包括数据定义语言、数据查询语言、数据操纵语言和数据控制语言等,下面详细介绍这些语言的使用方法。1SQL查询语句查询语句SQL查询语句主要用于从数据库中检索数据。数据查询语言主要包括SELECT等命令,SELECT命令的基本语法格式如下:SELECT字段名,FROMWHEREG

5、ROUP BYHAVINGORDER BY9.1.2结构化查询语言结构化查询语言SQL2SQL数据操纵语句数据操纵语句数据操纵语言是Data Manipulation Language的缩写,主要是用于添加、修改和删除数据库记录。数据操纵语言主要包括INSERT、UPDATE、DELETE等命令,详细用法如下:1)添加记录添加记录添加记录的基本格式如下:INSERT INTO(,)VALUES(,);说明:指定要添加记录的基本表名称。:指定记录字段的值。9.1.2结构化查询语言结构化查询语言SQL2)更新记录更新记录更新记录的基本语法格式如下:UPDATE SET=,=WHERE;说明:指定要

6、更新记录的基本表名称。:指定要更新记录的字段。:将指定的字段的值更新为表达式的值。3)3)删除记录删除记录 删除记录的基本语法格式如下:DELETE FROM WHERE;9.1.2结构化查询语言结构化查询语言SQL3SQL其他语句其他语句除了数据查询语句,数据操纵语句,SQL还有很多其他的语句,如数据定义语句,数据控制语句等等,下面将分别介绍这些语句的功能和用法。数据定义语句是Data Definition Language的缩写,主要用于定义表、视图或索引,主要包括CREATE、ALTER、DROP等命令。创建基本表的基本语法格式如下:创建基本表的基本语法格式如下:CREATE TABLE

7、(,),);说明:所要定义的基本表名称。:指定该表的字段名。:指定字段的数据类型,不同的数据库系统支持的数据类型不完全相同。:指定字段或表的完整性约束条件。9.1.2结构化查询语言结构化查询语言SQL数据控制语句:数据控制语句:数据控制语句主要用于对基本表和视图进行授权,描述完整性规则和控制事务。数据控制语句主要包括GRAND、COMMIT、ROLLBACK等命令。在Visual C+6.0访问数据库中很少涉及到部分内容,因此详细使用方法就不作介绍。9.1.3数据库访问模式数据库访问模式VC+6.0和数据库是两种不同的软件系统平台,为了实现不同平台之间的数据交流,VC+6.0提供了对数据库访问

8、的全面支持,主要的数据库访问技术概括起来有5种:1.ODBC API;2.MFC ODBC类;3.MFC DAO类;(数据访问对象)4.MFC的OLE/DB;5.ActiveX数据对象(ADO)。9.1.3数据库访问模式数据库访问模式1.ODBC API 最初出现于20世纪80年代末,ODBC是数据库应用程序访问的一个统一接口,对于不同的数据库,ODBC提供了一套统一的编程接口API。任何应用程序,只要系统包含有某数据库的确ODBC驱动程序,就可以使用其API来访问该数据库。ODBC结构是分层管理的,从上至下分别为应用程序层、ODBC接口层、驱动程序管理器、驱动程序、数据源。最开始,ODBC是

9、作为编写访问关系数据库的应用程序所提供的一种统一的接口。但现在,ODBC已经成为一种标准,目前的数据库系统一般都提供了驱动程序,这使得ODBC的应用范围十分广泛,基本上可以用于所有的数据库系统。9.1.3数据库访问模式数据库访问模式2.MFC ODBC2.MFC ODBCnMFC1.5后的版本里引入封装了ODBC功能的类。通过这些类提供与ODBC的接口,使得用户可以不须处理ODBC API中的繁杂处理就可以进行数据库操作。主要的MFC ODBC类如下:nCDatabase类:一个CDatabase对象表示一个到数据源的连接,通过它可以操作数据源。应用程序可使用多个CDatabase对象。nCR

10、ecordSet类:一个CRecordSet对象代表一个从数据源选择的一组记录的集合-记录集。记录集有两种形式:snapshot和dynaset。前者表示数据的静态视图,后者表示记录集与其他用户对数据库的更新保持同步。通过CRecordSet对象,用户可以对数据库中的记录进行各种操作。nCRecordView类:CRecordView对象是在空间中显示数据库记录的视图。这种视图是一种直接连到一个CRecordSet对象的格式视图,它从一个对话框模板资源创建,并将CRecordSet对象的字段显示在对话框模板的控件里。对象利用DDX和RFX机制,使格式上的控件和记录集的字段之间数据移动自动化,也

11、就是说,用户甚至不要编写一行代码就可以实现简单的数据库记录查看程序。9.1.3数据库访问模式数据库访问模式3.DAO3.DAO DAO是Data Access Object(数据访问对象)的缩写。通过Microsoft Access/Jet数据加引擎,可以访问Access数据库中的数据。nDAO为用户提供了以下的数据访问对象:n数据库对象(Database Object)n表定义对象(TableDef Object)n查询定义对象(QueryDef Object)n记录集对象(RecordSet Object)9.1.3数据库访问模式数据库访问模式4.4.OLE DBOLE DBnOLE DB

12、是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化问题语言(SQL)能力,还具有面向其他非SQL数据类型的通路。作为微软的组件对象模型(COM)的一种设计,OLE DB是一组读写数据的方法(在过去可能被称为渠道)。nOLE DB试图提供一种统一的数据访问接口,并能处理处理标准的关系性数据库中的数据之外,还能处理包括邮件数据、Web上的文本、图形、目录服务以及主机系统中的IMS和VSAM数据。OLE DB提供一个数据库编程COM接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储

13、地点、格式和类型。这个COM接口与ODBC相比,其健壮性和灵活性要高的多。9.1.3数据库访问模式数据库访问模式5.ActiveX5.ActiveX数据对象数据对象(ADO)(ADO)n是微软提供的面向对象的接口,与OLE DB类似,但接口更简单,具有更广泛的特征数组和更高程度的灵活性。ADO基于COM,提供编程语言可利用的对象,除了面向VC+,还提供面向其他各种开发工具的应用,如VB,VJ等。ADO在服务器应用方面非常有用,特别是对于动态服务器页面ASP(Active Server Page)。nADO对象结构类似于OLE DB,但并不依靠对象层次。大多数情况下,用户只需要创建并只使用需要处

14、理的对象。下面的对象类组成了ADO接口。nConnection:用于表示与数据库的连接,以及处理一些命令和事务。9.2 MFC ODBC数据库访问技术数据库访问技术n在Visual C+中,MFC封装的ODBC数据库类包括CDatabase(数据库类)、CRecordSet(记录集类)和CrecordView(记录视图类),更为用户提供了切实可行的解决方案。9.2.1 MFC的ODBC过程 使用MFC ODBC类访问数据库,主要有以下几个步骤:1.建立数据库 建立数据库就是用户根据自己的需要设计数据库中的表及各表之间的依赖关系。要想设计一个完整的数据库,首先必须了解数据库的基本知识。2.配置数

15、据源n数据库设计建立完成后,它只是单独的几张表,并不能在程序中去访问它,因为程序并不知道数据库在哪里。此时就需要在应用程序和数据库之间建立连接了。n配置数据源其实就是为数据库创建一个对外的窗口,应用程序通过这个窗口来访问数据库中的数据。3.数据库的连接n建立完数据库,又配置好了数据源,接下来就可以在程序中通过数据源来访问数据库了,其步骤如下:n(1)首先要在程序中引入MFC ODBC数据库的定义文件:n#include n(2)定义CDataBase数据库对象:nCDataBase m_dbn(3)利用CDataBase类的OpenEx函数建立和数据库的连接。n4.数据库操作n在完成了上面的步

16、骤后,就可以使用相应的SQL语句对数据库进行浏览、添加、删除、修改等操作了。9.2.2 MFC的的ODBC类类1CDatabase 类类 CDatabase类派生于CObject类。MFC的CDatabase类用来封装应用程序对数据库链接的处理,一个CDatabase对象就代表一个数据源的链接。数据源可以是SQL Server、Access、Borland dBASE和xBASE等数据库管理系统的数据实例,而链接可以是通过网络与一个数据库服务器的连接,也可以是在本地机上用来跟踪程序对一个数据库操作的设置。一个应用程序可以同时拥有多个激活的CDatabase 对象。CDatabase类的成员函数

17、直接与ODBC API相对应。n1)建立数据库链接n为使用CDatabase,需要构造一个CDatabase对象,然后紧接着调用Open()或OpenEx()成员函数,以打开一个数据库链接,因为在用它创建记录集(recordset)对象前必须对其进行初始化。当用户构造了CRecordset对象来对链接的数据源操作时,把记录集构造函数的指针传送给CDatabase对象。其中OpenEx()是优先选择的,因为它使用起来更为方便。n其函数原型如下:nVirtual BOOL OpenEX(LPCTSTR lpszConnectString,DWORD dwOptions=0);nThrow(CDBE

18、xception,CMemoryException);n若链接成功,则函数返回非零值,否则,若在出现的要求更多的链接信息对话框时选择了Cancle,则函数返回值为零。在其他情况下,都将产生异常。n2)设置超时时间n如果是通过网络与一个数据库服务系统连接,耗费的时间可能要比单机长一些,在此期间可能发生错误。可以用SetLoginTimeout()设置应用程序等待建立链接的时间,其原型为:nvoid SetLoginTimeOut(DWORD dwSeconds);n参数dwSeconds为尝试链接的秒数。n3)获取链接信息n可以随时用IsOpen()函数来查看CDatabase对象是否已经链接到

19、数据源,用GetConnect()得到链接数据库的链接字符串,用GetDatabaseName()查看数据源名字。它们的原型如下:nBOOL IsOpen()const;nConst CString&GetConnect()const;nCString GetDatabaseName()const;n其中,若CDatabase对象已经链接,则IsOpen()返回非零值;GetConnect()返回的是一个CString对象的const指针,带有数据库链接字符串,若还没有调用OpenEx()或Open()建立链接,则返回空的字符串;GetDatabaseName()返回一个带数据源名字的CStr

20、ing对象,若没有数据源,则返回空字符串。n4)用CDatabase:ExecuteSQL()执行SQL语句n对于返回结果集的一般查询,使用CRecordset很容易。然而,可以不用CRecordset执行不返回结果集的SQL语句,而是通过调用CDatabase类的CDatabase:ExecuteSQL()成员函数执行。其函数原型如下:nvoid ExecuteSQL(LPCTSTR lpszSQL);nThrow(CEBException);n参数lpszSQL是一个带SQL语句字符串的指针。n2.CRecordset类的使用nCRecordset类派生于CObject类。虽然CDatab

21、ase类允许对一个数据库执行SQL语句,但实际上是CRecordset 类提供了应用程序与数据交互的实际操作。CRecordset类用来封装数据库的查询,包括记录的插入、修改、删除等操作。n记录集主要分为快照集(Snapshot)和动态集(Dynaset)两种,CRecordset类对这两者都支持。动态记录集能保持与其他用户所做的更改同步;静态记录集则是数据的一个静态视图。每一种形式的记录集在被打开时都提供一组记录,所不同的是,当在一个动态集里滚动到一条记录时,由其他用户或用户自己的应用程序中的其他记录集对该记录所做的更改会相应地显示出来。n记录集对象一般都可以进行如下的操作:在记录间滚动、更

22、新记录并设定锁定模式、以记录信进行过滤、限制对数据源可选记录的选择、对记录排序、当完成操作后调用Close()函数销毁对象等。n3.CRecordView类的使用nCRecordView类对象直接与CRecordset(记录集)类对象连接,为该记录集提供显示的视图。它是数据库操作的界面,提供了以下几个操作:移动到第一个记录、下一个记录、前一个记录、最后一个记录,还可以更新数据库中当前视图所显示记录。9.3 ADO数据库访问技术 ADO是ActiveX Data Object(ActiveX数据对象)的缩写,是目前最流行的客户端数据库技术。ADO是建立在OLE DB底层技术之上的高级编程接口。9

23、.3.1 ADO数据库访问技术介绍数据库访问技术介绍nADO基于COM,并提供了多语言支持,很适合脚本语言。它除了提供面向Visual C+的应用外,还提供了面向其他各种开发工具的应用,如VB、VBScript、JavaScript和Java等。nADO是面向对象的,也是微软通过数据访问的一部分。ADO是从微软的远程数据对象发展而来的,并且具有替代RDO的远程数据服务的特征。nADO由ADO库、多维ADO库和扩展ADO库组成。其中,所有的ADO库都提供类型库,在使用ADO开发数据库应用程序时,都必须在应用程序中引用这些输入库。9.3.2 ADO数据库结构及其对象数据库结构及其对象 ADO是一种

24、面向对象的编程接口,ADO向我们提供了一个熟悉的,高层的对OLE DB的Automation封装接口,ADO对象可能很多读者都已熟知,如连接对象,命令对象,记录集对象,属性对象,错误对象,参数对象等等。下面我们将主要讲一下ADO对象模型,连接对象,命令对象和记录集对象。ADO ADO 对象模型对象模型 ADO模型是由个主体对象和个集合对象组成的。其中,主体对象分别为Connection、Command和Recordset,集合对象分别为Field(字段对象)、Parameter(参数对象)、Property(属性对象)和Error(错误对象)。连接对象连接对象 连接对象描述了一个与数据源打开的

25、连接。一个连接对象代表与一个数据源的惟一会话,在客户端服务器数据库系统情况下,它相当于一个到服务器的实际的网络连接。9.3.2 ADO数据库结构及其对象数据库结构及其对象命令对象命令对象 命令对象是一个特定命令的定义,用以在数据源中上执行。使用命令对象可以查询数据库,并将返回的记录存放在一个记录集对象中。还可以执行批操作或者理数据库结构等。命令对象包含一个参数集合和一个属性集合,并提供了许多属性、方法和事件。n1)命令对象的功能n定义命令的可执行文件:使用CommandText属性。n指定命令的类型:使用CommandType属性。n设置命令等待时间:使用CommandTimeout属性。n关

26、联一个打开的链接:使用ActiveConnection属性。n2)命令对象的主要属性nActiveConnection:当前的连接对象。nCommandText:命令文本,如SQL语句、表名、存储过程等。nCommandTimeout:命令等待时间。nCommandType:命令对象的类型n3)命令对象的主要方法nCreateParameter方法使用指定的属性来创建一个新的参数对象,方法定义如下:nParameterPtr CreateParameter(n _bstr_t Name,/指定参数对象的名称n Enum DataTypeEnum Type,/指定数据类型n Enum Param

27、eterDirectionEnum Direction,/指定参数传递方向n Long Size,/指定参数值的最大长度n Const_variant_t&Value/最大参数对象的值n);9.3.2 ADO数据库结构及其对象数据库结构及其对象记录集对象记录集对象n记录集对象用于描述从基本表或执行命令的结果返回的整个记录集。在任何时候,记录集对象中只包含单条记录数据,称之为当前记录。n使用记录对象可以管理来自提供者的数据。在使用ADO时,操作数据几乎全部使用记录集对象。所有的记录集对象都是由记录和字段所组成的。记录集对象包含一个字段集合和一个属性集合,并提供了许多属性、方法和事件。n)记录集对

28、象的功能n打开和关闭记录集对象:使用Open方法和Close方法。n编辑记录:使用AddNew、Delete和Update等方法。n)记录集对象的主要属性nActiveConnection:当前的连接对象。nBOF:当前记录在第一条记录之前。nEditMode:当前记录编辑状态n)记录集对象的主要方法n(1)Open方法可以打开一个游标,用来描述一个来自基本表或查询结果的记录信对象,方法定义如下:nHRESULT Open(n Const_variant_t&Source,/指定记录集n Const_variant+t&ActiveConnection,/指定记录集对象使用的连接n Enum

29、CursorTypeEnum Cursortype,/指定使用的游标类型n Enum LockTypeEnumLockType,/指定锁定类型n Long Options/解释选项,指定命令类型n);n(2)Close方法用来关闭一个记录集对象及相关对象,方法定义如下:nHRESULT Close();nMove方法用来在记录集对象中移动当前记录的位置,方法定义如下:nHRESULT Move(n Long NumRecords,/指定要移动的记录数n Const_variant_t&Start/指定移动的起始位置,可以是字符串n);n(3)MoveFirst、MoveLast、MoveNex

30、t和MovePrevious方法分别用来在指定记录集对象中移到第一条、最后一条、下一条和上一条记录位置。这些方法无须传递参数。n(4)NextRecordset方法用来清除当前记录集对象,并返回系列命令所产生的下一个记录集对象,方法定义如下:n_RecordsetPtr NextRecordset(n VARIANT*RecordAffectedn);n(5)AddNew方法用来在可更新的记录集对象只创建一个新的记录,方法定义如下:nHRESULT AddNew(n Const_variant_t FieldList,/指定字段列表数组n Const_variant_t&value/指定字段值

31、数组n);n(6)Delete方法用来删除当前记录或一组记录,方法定义如下:nHRESULT Delete(n Enum AffectEnum AffectRecords/指定受影响的记录数,是AffectEnum枚举类型值n);n(7)Update方法用来将对当前记录所做的更改保存到记录集对象,方法定义如下:nHRESULT Update(n Const_variant_t&Fields,/指定字段数组n Const_variant_t&Values/指定字段值数组n);n(8)GetRows方法用来获取记录集的多个记录,并将结果存放到一个二维数组中,方法定义如下:n_variant_t G

32、etRows(n Long Rows,/指定要获取的记录数n Const_variant_t&Start,/指定开始标签,是一个BookmarkEnum枚举类型值n Const_variant_t&Fields/返回字段数组n);9.3.3 使用使用ADO数据库对象操作数据库数据库对象操作数据库 ADO(ActiveX Date Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术。ADO封装了OLE DB所提供的接口,是基于OLE DB模型之上的更高层应用,比起OLE DB提供者,ADO的接口可以使程序员在更高级别上同数据交互,并且保留了

33、MFC/ODBC和DAO的特征。ADO技术不仅应用于关系数据库,也可以应用于非关系数据库。9.3.3 使用使用ADO数据库对象操作数据库数据库对象操作数据库ADO编程步骤()连接数据源()创建对该数据源的查询()执行该查询 ()把查询数据存储到可访问对象中()更新该数据源,以反映对该数据的编辑 一般来说,需要使用以上ADO编程模型中的所有步骤。但是ADO具有很大的灵活性也可以根据需要只使用模型中的一部分。例如,可以创建一个新的记录集对象,并在代码中为其赋值,不必连接到某个数据源,也不必执行任何查询语句,甚至还可以把记录集对象传送给其他过程或应用程序。9.3.3 使用使用ADO数据库对象操作数据

34、数据库对象操作数据库库 设计应用程序设计应用程序 在ADO编程之前先建立一个Access数据库Project.mdb。以下是ADO编程的具体方法。)生成应用程序框架并初始化OLE/COM库环境 )引入ADO库文件 )创建ADO与数据源的连接 )执行SQL命令并取得结果记录集9.4基础实例 ODBC数据库应用程序n1.编程要求n 编写一个电话本信息查看程序。程序运行后,程序界面显示电话本中联系人的基本信息(姓名、电话号码和企业名称等),单击工具栏上的导航按钮(上一条、下一条、第一条、最后一条等),可以在电话本翻阅查看其他联系人的信息。n2.编程实现n(1)建立一个名为“电话本”的Access数据

35、库,在“电话本”数据库中建立两张表:“电话本”表和“企业信息”表。n(2)建立一个查询,两个表(企业信息表和电话本表)根据“单位编号”字段关联查询,查询字段包括“电话本”表中的姓名、性别、电话号码和“企业信息”表中的企业名称、企业地址。创建的查询命名为“电话本详细信息”。n(3)在“控制面板”的“管理工具”下的“数据源ODBC”中建立一个ODBC数据源,过程如下:n首先打开ODBC数据源管理器,单击“添加”按钮,弹出“创建数据源”对话框,选择数据源的驱动程序,本例中选择“Driver for Microsoft Access(*.mdb)”。单击“完成”按钮。将会出现一个对话框,在“数据源名”

36、中输入名称用以标识这个ODBC数据源,再选择一个数据库文件,没有的话,可以再新创建一个数据库。选择数据库文件完毕后,单击“确定”按钮即可。此时就创建了一个ODBC数据源。n(4)打开Visual C+6.0,再打开应用程序向导,如图9-5所示。n(5)在步骤1中保持默认选择(多文档),单击“下一步”按钮,进入向导的步骤2,如图9-6所示。n(6)选择“查看数据库不使用文件支持”单选按钮,然后单击“数据源”按钮,显示“Database Options(数据库选项)”对话框,如图9-7所示。n(7)选中数据源类型“ODBC”,并从下拉列表中选择“电话本”,其他保持默认。单击“OK”按钮,将会显示“

37、Select Database Tables(选择数据库的表)”对话框,如图9-8所示。n(8)选择“电话本详细信息”查询,单击“OK”按钮返回应用程序向导。n(9)单击“完成”按钮,将会显示“强制使用SDI”提示信息。n(10)单击“确定”按钮,显示“新建工程信息”对话框,然后单击“确定”按钮就完成了一个工程的创建。现在Visual C+6.0窗口中显示的是IDD_ODBC_FORM对话框。n(11)参照图9-10定制该窗口的布局,并设置各控件属性。n(12)在视图类CODBCView 的DoDataExchange函数中添加绑定记录代码如下:nvoid CODBCView:DoDataEx

38、change(CDataExchange*pDX)nn CRecordView:DoDataExchange(pDX);n /AFX_DATA_MAP(CODBCView)n /NOTE:the ClassWizard will add DDX and DDV calls heren /把数据集中的域数据成员和文本框的值绑定n DDX_FieldText(pDX,IDC_EDIT1,m_pSet-m_column1,m_pSet);n DDX_FieldText(pDX,IDC_EDIT2,m_pSet-m_column2,m_pSet);n DDX_FieldText(pDX,IDC_EDI

39、T2,m_pSet-m_column3,m_pSet);n DDX_FieldText(pDX,IDC_EDIT3,m_pSet-m_column4,m_pSet);n DDX_FieldText(pDX,IDC_EDIT4,m_pSet-m_column5,m_pSet);n /AFX_DATA_MAPnn(13)编译运行,示例程序的运行效果如图9-11所示。9.5 提高实例 ADO数据库应用程序n1.编程要求n编写一个学生信息查看程序。程序运行后,界面显示某一学生信息,在程序中可以上下查看其他学生的信息,输入某一个学生的姓名或学号后,可以根据姓名或学号查询该学生的信息。n2.编程实现n本示

40、例要用到SQL数据库。所以第一步要建立一个SQL数据库,然后再用ADO对象去连接数据库,访问数据库中的数据。n(1)打开SQL Server 2005应用程序,新建一个名叫student的数据库。创建好数据库后,创建一个名叫stud_info的学生信息表。n(2)利用应用程序向导创建一个基于对话框的应用程序,命名为ADO。n(3)在工作区的ResourceView页面中双击Dialog文件夹下的IDD_ADO_FORM,打开视图模板编辑器,并参照图9-12编辑窗口布局界面。n(4)通过ClassWizard为各个控件添加对应的变量。n(5)在头文件StdAfx.h文件中引入ADO库的代码。n#

41、import C:Program FilesCommon FilesSystemadomsado15.dllno_namespace rename(EOF,adoEOF)n(6)在程序类CADOApp中声名连接对象,访问类型为public。n public:n _ConnectionPtr m_pConnection;n(7)初始化程序例程。n在程序类CADOApp的InitInstance()函数中,初始化COM环境,创建连接对象,代码如下:nBOOL CADOApp:InitInstance()nn AfxEnableControlContainer();n AfxOleInit();/初

42、始化COM环境n HERSULT hr;n _bstr_t strConnect;n strConnect=Provider=SQLOLEDB.1;Integrated Security=SSPI;/连接字符串 n Persist Security Info=False;Initial Catalog=student;Data Source=.;n tryn n m_pConnection.CreateInstance(ADODB.Connection);/与数据源的连接n hr=m_pConnection-Open(strConnect,adModeUnknown);n n catch(_c

43、om_error e)n n AfxMessageBox(e.Description();n n n return FALSE;nn(8)在对话框类CADODlg中声明记录集对象,访问类型为protected。n protected:n _RecordsetPtr m_pRecordset;n(9)初始化对话框。n在函数BOOL CADODlg:OnInitDialog()中创建记录集对象,打开记录集,并调用函数DispRecord()将数据显示出来。n(10)在对话框类中,添加记录函数DispRecord(),用来将数据库中的记录显示在对话框中。n(11)实现浏览记录集功能。n通过ClassWizard为“前一条”和“后一条”按钮增加响应函数。下面分别是“前一条”按钮和“后一条”按钮的单击事件代码。n(12)实现查询记录功能。n利用ClassWizard分别为“按学号”按钮和“按姓名”按钮添加单击响应函数。下面分别是“按学号”查询信息记录和“按姓名”查询信息记录的代码。n(13)还原COM环境以关闭连接对象和记录集。n通过ClassWizard增加函数void CADODlg:OnDestroy(),以还原COM环境,并关闭连接对象和记录集。n(14)编绎、连接运行程序,结果如图9-13所示。本章结束

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Visual-C++程序设计教程第九章.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|