版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库应用教程(Visual Basic+SQL Server),第 9 章,第9章 利用Data控件开发数据库应用程序,数据库应用教程,9.1 利用Visual Basic 6.0开发数据库应用程序概述,9.2 Data控件和数据绑定控件,9.3 高级数据绑定控件的使用,第9章 利用Data控件开发数据库应用程序,9.1.1 Visual Basic数据库开发功能概述,9.1.2 Visual Basic 6.0支持的数据库种类,9.1.3 Visual Basic 6.0支持的数据存取模式,9.1 利用Visual Basic 6.0开发数据库应用程序概述,9.1.4ODBC简介,9.1.
2、1 Visual Basic数据库开发功能概述,Visual Basic 6.0中与数据库编程有关的特征可描述如下:,(1)Visual Basic处理的数据库属于关系型数据库。,(2)支持多种存取模式,如DAO(数据访问对象)、RDO(远程数据对象)、ADO(ActiveX数据对象)。,(3)可以针对SQL Server、Oracle等不同的数据库服务器开发完善的客户/服务器应用程序。,(4)增强了不需要经过复杂编程就可以管理和显示数据库数据的Data控件和数据绑定控件。Data控件用于与具体的数据库相连接,数据绑定控件用于显示和修改数据库中的数据。,(5)提供了Data Report De
3、signer报表设计工具,能够快速地生成报表。,(6)提供了使用和配置连接的工具与命令,提供了进行ODBC开发的API函数。,(7)完全支持多层的数据库应用程序开发。客户服务器应用程序一般有两层和多层之分,多层数据库应用程序一般是三层。,9.1.2 Visual Basic 6.0支持的数据库种类,Visual Basic 6.0版本能够操作的数据库基本上可以分成下三类:,1Visual Basic本地数据库,即Microsoft Access数据库。,2外部数据库,支持几种流行ISAM(Index Sequence Access Method索引顺序访问方法)数据库,该类数据库主要包括:dB
4、ase系列、Microsoft FoxPro系列、Paradox系列等。另外Visual Basic 6.0还可以访问文本文件、Microsoft Excel、Lotus l-2-3电子表格等。,3ODBC数据库,Visual Basic 6.0版本支持符合ODBC标准的客户/服务器数据库,主要的客户/服务器数据库有:Microsoft SQL Server、Oracle等。,9.1.3 Visual Basic 6.0支持的数据存取模式,1Visual Basic 6.0中支持数据存取模式,(1)数据存取对象(Data Access ObjectsDAO),(2)远程数据对象(Remote
5、Data ObjectsRDO),(3)ActiveX数据对象(ActiveX Data ObjectsADO),说明:起初,Visual Basic只支持连接在Microsoft Jet数据库引擎(Microsoft Access中的数据库引擎)上的DAO。后来,考虑到存在其他数据库类型,微软公司制定了开放式数据库连接(ODBC)标准,并用RDO支持这一标准。最后,微软公司认识到Web的重要性,并创建ActiveX数据对象。ActiveX数据对象编制了一种允许通过网络和Web方式连接到同一台计算机上的弹性标准,并用来取代ODBC。通过这三种数据存取方法,使用Visual Basic 6.0以
6、上版本可以在应用程序中通过编程控制连接、通过查询返回数据和操作数据。,9.1.3 Visual Basic 6.0支持的数据存取模式,2在Visual Basic 6.0中使用数据存取模式的方法,(1)使用特殊控件,在Visual Basic 6.0中提供了支持DAO、RDO和ADO的特殊控件:Data控件(支持DAO)、远程Data控件(支持ODBC)和ADO Data控件(支持ADO)。使用这些控件可以连接到数据库并操作数据库中的数据,但这些控件实际上并不能显示数据,要显示数据必须将它们与Visual Basic的数据绑定控件捆绑在一块,由这些数据绑定控件控制数据显示、修改和记录的移动等。
7、,(2)通过程序代码,每种数据存取方法都由一系列的对象组成,这些对象都有一系列的方法、属性甚至可响应特定的事件,在程序中可以直接以编程方式创建和使用三种数据存取方法提供的对象,实现数据库应用程序需要的功能,如:数据的显示和修改、记录的移动和数据查询等。,9.1.4ODBC简介,1ODBC简介,ODBC(Open Database Connectivity)的全称是开放的数据库互连,它是一种访问数据库的统一界面标准。通过ODBC,数据库应用程序不需要考虑不同数据库的格式,而采用统一的方法去使用数据库。,ODBC实际上是一组访问数据库的API函数库,应用程序可以通过ODBC API函数操作数据库中
8、的数据。另外,ODBC是基于SQL语言的,所以ODBC又是SQL和应用程序之间的标准接口,解决了传统的宿主式或嵌入式SQL接口不够规范的问题。,从物理上看,ODBC实际上是由应用层、ODBC层和数据层三个层次组成 。,(1)数据源名:它是通过ODBC管理器注册的一个数据源的名称,应用程序根据数据源名就可访问具体的数据库,从而使中间的细节变得透明;,(2)ODBC数据库应用程序:完成数据库功能的由程序设计语言编写的应用程序;,(3)ODBC管理器(ODBC Administrator):该程序位于Windows控制面板的32位ODBC内,其主要任务是管理ODBC驱动程序和数据源;,(4)驱动程序
9、管理器(Driver Manager):驱动程序管理器包含在ODBC32.DLL中,对用户是透明的,其任务是管理ODBC驱动程序,是ODBC中最重要的部件;,(5)ODBC API:ODBC提供的一组操作数据库的函数;,(6)各种数据源:数据源包含了数据库位置和数据库类型等信息。,优点:,1.应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接,然后通过数据源名就可连接操作数据库。,2. ODBC的最大优点是能以统一的方式处理各种不同类型的数据库,从而使得开发者不需要以特殊的DBMS为目标,也不需要了解不同的DBMS的详细细节,就能开发出数据库应用程序。,9.1.4ODBC简
10、介,2ODBC数据源(DSN)的概念,定义:根据微软的权威定义,DSN的意思是“应用程序用以请求一个连到ODBC数据源的连接(Connection)的名字” 。,DSN是一个代表ODBC连接的各称,隐藏了诸如数据库文件名、所在目录、数据库驱动程序、用户ID、密码等细节问题,使具体的数据库对应用程序变得透明。,DSN可分成三种:,系统DSN(SYSTEM DSN):这种DSN可以被登录到系统中的所有用户使用;,用户DSN(USER DSN):这种DSN是为特定用户建立的,只能被建立它的用户使用;,文档DSN(FILE DSN):用于文档的DSN。,9.1.4ODBC简介,3ODBC系统DSN的创
11、建,【例9-1】为CollegeMIS数据库建立一个系统DSN,DSN名为“SQLCollegeMIS”。,起始步骤:在Windows XP中,打开控制面板窗口,在控制面板窗口中双击“管理工具”图标,然后再双击“数据源(ODBC)”图标,将会打开如图9-2所示的“ODBC Data Source Administrator”窗口。,9.2.1 Data控件和数据绑定控件的概念,9.2.2 Data控件的常用属性,9.2.3 Data控件的常用方法,9.2 Data控件和数据绑定控件,9.2.4 数据绑定控件的常用属性,9.2.5 Data控件的Recordset对象的常用方法,9.2.6 Da
12、ta控件的常用事件,9.2.1 Data控件和数据绑定控件的概念,注意:在窗体上放置Data控件,通过Data控件与数据库建立联系,在窗体上放置数据绑定控件,通过它们显示Data控件产生的记录集(RecordSet)中的内容。,9.2.1 Data控件和数据绑定控件的概念,1Data控件,Data控件是把数据库和数据绑定控件连接起来的桥梁,通过设置Data控件的属性,可以让它连接到某个数据库并能指定访问该数据库中的某个表或执行SQL语句访问多个表。Data控件将数据库中的指定数据提取出来,并放在一个记录集(Recordset)中。记录集可看成是内存中的虚拟表,它的数据可来源于表、视图或SELE
13、CT语句执行后得到的记录的集合 。,记录集可以有五种类型,分别是表类型、动态集类型、快照类型、仅向前型、动态类型。记录集(Recordset)也是一个对象,它由行和列组成,行称为记录(Records),列称为字段(Fields)。,9.2.1 Data控件和数据绑定控件的概念,(1)表类型(Table-type),表类型的记录集只能基于单个表打开,对表类型的记录集的所有操作都是直接对基本表进行的。与其他类型的记录集对象相比,在表类型的记录集中进行搜索与排序速度是最快的,当设置了索引后,使用Seek方法可以快速定位到要查找的记录,Seek方法明显要快于Find方法。,(2)动态集类型(Dynas
14、et-type),动态集类型的记录集可以是单个表,也可以是SELECT语句返回的查询结果(即对一个或者几个表中的相关数据的引用)。,动态集和它的基本表可以互相更新的。如果动态集中的记录发生改变,同样的变化也将在基本表中反映出来。在打开动态集的时候,如果其他的用户修改了基本表,那么动态集中也将反映出被修改过的记录。动态集类型是最灵活、功能最强的记录集类型,但它的查询速度与操作速度不及表类型的记录集对象。如不能进行索引查询。,9.2.1 Data控件和数据绑定控件的概念,(3)快照类型(Snapshot-type),快照类型的记录集包含的数据是固定的,它反映的是在产生快照的一瞬间数据库的状态。一般
15、来说,快照类型的记录集是不可更新的。与动态集类型和表类型的记录集相比,该类型的记录集的优点是系统开销较少,执行查询和返回数据的速度更快,缺点是不能进行数据更新。,(4)仅向前类型(Forward-only-type),仅向前类型的记录集,有时被称为“向前滚动快照”记录集或者“仅向前快照”记录集。它提供了快照的一部分功能,占用系统资源较少,速度较快。仅向前的快照只允许在记录中向前移动,而不能向相反的方向移动,因此这种类型的记录集对象不能被复制,而且只支持Move和MoveNext方法。,9.2.1 Data控件和数据绑定控件的概念,(5)动态类型(Dynamic-type),动态类型的记录集是从
16、一个或几个基本表中查询得到的结果集,对于返回行的查询,可以在其中添加、修改或删除记录。其他用户对基本表的添加、删除和修改操作也将出现在用户的记录集中。,9.2.1 Data控件和数据绑定控件的概念,2数据绑定控件,标准数据绑定控件主要包括以下几种:,(1)复选框:主要用来显示或设置布尔类型(Boolean)字段的值。如果绑定的布尔型字段的值为NULL,则复选框为灰色。,(2)图片框:图片框可以用来设置或显示在二进制类型的字段中存放的各种图片格式的数据,主要的图片格式有:.bmp、.ico、jpg、.gif、.wmf、.dib等。,(3)标签:主要用来显示字符类型、数值类型和日期类型字段的数据,
17、但不能对相应的字段进行修改。,(4)图像框:与图片框一样,但可使图片按照图片框的大小进行放大或缩小。,(5)文本框:用来显示或设置字符类型、数值类型和日期类型字段的数据。,(6)列表框:显示一个列表,用来显示或设置字符类型、数值类型和日期类型字段的数据。,(7)组合框:与列表框类似。,(8)OLE容器控件:显示或修改OLE对象类型字段的值。,ActiveX数据绑定控件有: DBListBox、DBComboBox、MSFlexGrid、DBGrid等 。,9.2.2 Data控件的常用属性,1Connect属性,Connect属性指定数据库类型,在该属性名的后面有一个列表框,用户可以直接从该列
18、表框中选择属性值。如果要使用在列表中没有列出的数据库类型,如SQL Server,可使用ODBC连接字符串与之进行连接。使要访问SQL Server数据库CollegeMIS,可使用如下的连接字符串: ODBC;Driver=SQL Server;Server=TAHSJ; UID=sa;PWD=tah980808;Database=CollegeMIS 。,2DatabaseName属性,DatabaseName属性用来指定具体使用的数据库。如果要连接到的数据库文件包含多张表,如Microsoft Access数据库,就要把该属性设置为数据库文件名(如:MDB文件的文件名,Access数据库
19、的所有表都包含在一个MDB文件中)。如果连接到只由一张表构成的数据库(如dBase、FoxPro或Paradox数据库),则应把该属性值设置为对应的子目录名,在该子目录下存放了数据库文件。,注意:要想连接到Microsoft Access数据库,Connect属性值设置为“Access”,DatabaseName属性值设置为数据库名称。,9.2.2 Data控件的常用属性,3RecordSetType属性,RecordSetType属性用来确定记录集类型,取值有:Table(表)、Dynaset(动态集)和Snapshot(快照)。,4RecordSource属性,RecordSource确定
20、具体可访问的数据,可以是数据库中的单个表或一个存储查询,也可以是SQL- SELECT语句。由RecordSource确定的具体可访问的数据构成的记录集(Recordset)也是一个对象,该对象也具有属性、方法和事件 。,9.2.2 Data控件的常用属性,5RecordSet对象的常用属性,()Eof和Bof属性,如果记录指针位于第一条记录之前,则Bof属性值为True,否则Bof的值为False。,如果记录指针位于最后一条记录之后,则Eof属性值为True,否则Eof的值为False。,9.2.2 Data控件的常用属性,5RecordSet对象的常用属性,Eof和Bof属性具有以下特点:
21、,如果记录集中没有记录,则Bof属性和Eof属性值都是True。,当Bof属性或 Eof属性的值成为True之后,只有将指针移动到实际存在的记录上,Bof属性或 Eof属性的值才会变为False。,若Bof属性或Eof属性的值为False,而且记录集中唯一的记录被删除掉,那么这两个属性的值将依旧保持False,直到将记录指针移到另一个记录上为止,这时Bof属性和Eof属性的值都将变为True。,当创建或打开至少含有一个记录的记录集时,第一个记录将成为当前记录,而且Bof属性和Eof属性的值均为False。,(2)RecordCount属性,记录集中的记录数量,如果记录集中没有记录,Record
22、Count属性值为0。,9.2.2 Data控件的常用属性,6EofAction属性和BofAction属性,7ReadOnly属性,该属性用来控制能否对记录集中的数据进行修改操作。值为True时,不能对记录集中的数据进行修改操作,值为False时,可以对记录集中的数据进行修改操作。,9.2.3 Data控件的常用方法,1Refresh方法,2UpdateRecord方法,该方法的作用是重读数据库,刷新记录集,从而根据记录集内容而构建的用户界面也跟着刷新。如果在执行了AddNew方法或Edit方法后并且在还没有调用Update方法之前,由于数据的修改没有写入到数据库中,这时调用Refresh方
23、法,将会清除掉用户所做的添加或修改。,该方法的作用是用数据绑定控件中的数据去更新数据库中的数据。通常用于修改后的确认操作。,3UpdateControls方法,该方法的作用是用记录集的当前记录中的数据更新绑定控件的值,即把数据绑定控件中的数据恢复为修改前的原始值,相当于用户在更改了数据之后决定取消更改。通常在“取消”或“放弃”操作中调用该方法。,9.2.4 数据绑定控件的常用属性,1DataSource属性,2DataField属性,数据源属性,指定数据绑定控件需要绑定到的Data控件各称。,该属性用来指定数据绑定控件与Data控件形成的记录集中的哪个字段相绑定,绑定过后,该数据绑定控件就可以
24、显示和修改对应字段的内容了。,3DataChanged属性,该属性用来指出显示在数据绑定控件里的数据是否已经被改变,如果改变了,值为True,没有改变,值为False。,9.2.4 数据绑定控件的常用属性,在应用程序中使用数据绑定控件的步骤如下:,(2)设置数据绑定控件的DataSource属性,该属性值为要绑定的Data控件名;,(1)添加数据绑定控件到Visual Basic的窗体中;,(3)设置数据绑定控件的DataField属性,该属性值为Data控件形成的记录集里的一个有效字段名。,注意:如果设计时数据库可用,则有效字段的列表将显示在“属性”窗口里的“DataField”属性后面的列
25、表框中,用户可以从中选择一个。如果在设计时数据库不可用,可在该属性后的文本框中输入一个有效的字段名或者在运行时为该属性赋值为一个有效的字段名。,注意:运行程序时,使用Data控件上的箭头按钮可在记录间移动,使用数据绑定控件可以查看或修改显示出来的字段内容。只要单击Data控件上的箭头按钮,Visual Basic会自动地更新对记录集所做的修改。 。,【例9-2】编写一个对CollegeMIS数据库中Teacher表进行浏览和修改的程序,程序的设计界面如图9-14所示,程序的运行结果如图9-15所示。,图9-14 例9-2的程序设计界面,图9-15 例9-2的程序运行界面,实现思路:要浏览Col
26、legeMIS数据库中的Teacher表,可在窗体上放置一个Data控件,通过设置它的Connection属性连接到SQL Server的CollegeMIS数据库,通过设置RecordSource属性使Data控件和Teacher表联系在一起。可用若干个Text控件来显示和修改Teacher表中的除Sex、Marriage和Picture外的其它字段的值,用一个组合框来显示和修改Sex字段的值,用一个图像框来显示和修改Picture字段的值,用一个复选框显示和修改Marriage字段的值。要把这些控件与Teacher表的相应字段绑定在一起,还需设置这些控件的DataSource属性和Data
27、Field属性:把DataSource属性值设置为Data控件名称,DataField属性值设置为字段名称。,更改数据库中的照片(Image类型的字段),有两种方法:一是通过剪贴板,先把数据存放到剪贴板上,然后使用语句 “Image1.Picture = Clipboard.GetData”把剪贴板上的照片显示在图像框中;二是使用图像框的LoadPicture方法,先把照片存放在磁盘上,然后使用语句“Image1.Picture=LoadPicture(”图像文件名”)”把照片显示在图像框中。单击Data控件的移动按钮时,图像将自动保存到数据库中。,Connect 属性设置:ODBC;Driv
28、er=SQL Server; Server=TAHSJ; UID=sa; PWD=tah980808; Database=CollegeMIS,其它参见例子程序。,9.2.5 Data控件的Recordset对象的常用方法,1Move类方法,该方法的作用是把记录指针移到当前记录的下一条记录。,(1)MoveNext方法,(2)MovePrevious方法,该方法的作用是把记录指针移到当前记录的上一条记录。,(3)MoveFirst方法,该方法的作用是把记录指针移到第一条记录。,(4)MoveLast方法,该方法的作用是把记录指针移到最后一条记录。,(5)Move n方法,该方法使记录指针向前或
29、向后移|n|条记录,n为正表示向记录集的末尾移动,n的值为负表示向记录集的开头移动。,注意:移动记录的时候需特别注意对文件头和文件尾的测试 。,【例9-3】编写一个利用按钮对CollegeMIS数据库中的Teacher表进行浏览和修改的数据库应用程序,在运行时不显示Data控件,通过五个按钮来实现记录指针的移动,程序的设计界面如图9-16 所示,程序的运行界面如图9-17所示。,图9-16 例9-3的程序设计界面,图9-17 例9-3的程序运行界面,注意:代码参见实例。,9.2.5 Data控件的Recordset对象的常用方法,2Find类方法,使用Data控件进行数据库查找,有两种方法,一
30、种是索引查找,见Seek方法;另一种是顺序查找。要进行顺序查找,需要使用Data控件的RecordSet对象的Find类方法 。,(1)FindFirst方法,其作用是查找满足条件的第一条记录,语法格式如下: Data控件名.RecordSet.FindFirst 条件,(2)FindLast方法,其作用是查找满足条件的最后一条记录,语法格式如下: Data控件名.RecordSet.FindLast 条件,(3)FindNext方法,其作用是查找满足条件的下一条记录,语法格式如下: Data控件名.RecordSet.FindNext 条件,(4)FindPrevious方法,其作用是查找满
31、足条件的上一条记录,语法格式如下: Data控件名.RecordSet.FindPrevious 条件,查找方法中的条件都是一个字符串,字符串中存放的是指定字段与常量或变量构成的表达式。表达式中除可用普通的关系运算符外,还可以使用Like运算符。如要在Data1控件的记录集中查找第一个职称(字段名为Title)为“副教授”的记录,可使用下列语句: Data1.RecordSet.FindFirst Title=副教授,如果要接着查找下一条职称为“副教授”的记录,可使用下列语句: Data1.RecordSet.FindNext 姓名=副教授,如果条件部分与字段比较的数据来源于变量,如要查找的人
32、的职称存放在变量ZC中,则查找满足条件的第一条记录的命令可按以下格式书写: Data1.RecordSet.FindFirst Title= uid=sa;pwd=tah980808 其中,“SQLCollegeMIS”是已经创建好的SQL Server数据库的DSN,“sa”是用户名(系统管理员),“tah980808”是用户(系统管理员)密码。,(2)通过ODBC的DSN连接到Access数据库,通过ODBC的DSN连接到Access数据库的连接字符串的一般形式如下: DSN=AccessCMIS;uid=;pwd= 其中,“AccessCMIS”是已经创建好的Microsoft Acce
33、ss数据库的DSN。,10.2.3 连接到数据库的方法,2通过ODBC建立连接,(1)通过ODBC连接到SQL Server数据库,该方式的连接字符串有两种:普通安全模式和信任安全模式。 使用普通安全模式的连接字符串的一般形式如下: Driver=SQL Server; Server=tahsj; Database=CollegeMIS;uid =sa;pwd=tah980808 其中“tahsj”是服务器名,“CollegeMIS”是数据库名,“sa”是用户名,“tah980808”是用户密码。 使用信任安全模式的连接字符串的一般形式如下: Driver=SQL Server; Server
34、=tahsj; Database=CollegeMIS;uid =;pwd= 与普通安全模式相比,只是不需要提供用户名和密码。,(2)通过ODBC连接到Access数据库,通过ODBC连接到Access数据库的连接字符串的一般形式如下: DRIVER=Microsoft Access Driver (*.mdb); DBQ= User IDUserName; PasswordUserPassword;initial CatalogDatabaseName; DataSource=ServerName,Provider:指定连接数据库的类型。如果连接的是Access数据库,则此处应赋值 Micr
35、osoft Jet OLEDB 4.0;如果连接的为SQL Server 2000数据库,则此处赋值为SQLOLEDB.l。,UserID:用户ID为访问数据库的用户名,例如SQL Server 2000中的sa用户。,Password:用户密码是指与用户ID对应的密码。,InitialCatalog:根据连接数据库的不同,该参数也有不同的含义,在SQL Server 2000中是指默认打开的数据库名称。,DataSource:指定连接的数据库服务器名称。不但可以是数据库服务器的名称,还可以是数据库服务器的IP地址或数据库服务器的主机名称,若是本机可以指定为127.0.0.1或Local。,1
36、0.2.3 连接到数据库的方法,(1)通过OLE-DB连接到SQL Server数据库,通过OLE-DB连接到SQL Server数据库的连接字符串的一般形式如下: Provider=SQLOLEDB.1;User ID=sa;Password=tah980808; Initial Catalog=CollegeMIS; Data Source=TAHSJ 其中,Provider关键字用于指定要连接SQL Server 2000服务器;User IDsa和PasswordTAH980808分别为连接到SQL Server 2000数据库服务器的用户名和密码;Initial Catalog指定打
37、开的数据库为CollegeMIS;DataSource指定SQL Server数据库服务器为TAHSJ。,(2)通过OLE-DB连接到Access数据库,通过OLE-DB连接到Access数据库的连接字符串一般形式如下: Provider=Microsoft.Jet.oledb.4.0;Data Source= Password= 其中“User ID=”后面写用户名,“Password=”后面写用户口令。,10.3.1 Recordset对象简介,10.3.2 Recordset对象的属性,10.3.3 Recordset对象的方法,10.3 RecordSet对象,10.3.4 访问Rec
38、ordset对象中的字段的方法,10.3.1 Recordset对象简介,1.概述,Recordset 对象表示的是来自基本表或SQL命令查询结果的记录集,由一系列的行和列组成,每一行称为一条记录,每一列称为一个字段。在任何时候,Recordset 对象所指的当前记录均为记录集中的单个记录。可以使用 Recordset 对象进行数据操作,如移动记录、添加记录、删除记录、查询记录等。由于数据提供者所支持的功能不同,某些 Recordset 方法或属性有可能无法使用。,10.3.1 Recordset对象简介,2.四种不同的游标类型,(1)动态游标用于查看其他用户所作的添加、更改和删除,并用于不依
39、赖书签的 Recordset中各种类型的移动。如果提供者支持,可使用书签。,(2)键集游标其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许Recordset中各种类型的移动。,(3)静态游标提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许Recordset中各种类型的移动。其他用户所作的添加、更改或删除将不可见。,(4)仅向前游标除仅允许在记录中向前滚动之外,其行为类似动态游标。这样,当需要在Recordset中单程移动时就可提高性能。,注意:在打开Recordset对象之前可
40、通过设置CursorType属性值来选择游标类型,或使用Open方法传递CursorType参数来选择游标类型。部分数据提供者不支持所有游标类型,如果没有指定游标类型,ADO将默认打开仅向前游标。,10.3.2 Recordset对象的属性,1AbsolutePage、PageCount与PageSize属性,用来控制对Recordset对象的分页。PageSize属性是一个长整型属性,用于设置或返回一页中的记录数;PageCount属性是一个长整型属性,用于返回Recordset对象包含的数据页数。即使最后页是不完整的页,该页也会计入到PageCount属性值中。如果Recordset对象不
41、支持该属性,属性值为-1,以表明PageCount无法确定;AbsolutePage属性也是一个长整型属性,用来设置或返回当前记录所在的页。其值在1到PageCount之间,或者取如表10-3所示的常量值。当设置该属性时,记录指针将移动到指定页的第一个记录。,10.3.2 Recordset对象的属性,2AbsolutePosition和RecordCount属性,RecordCount属性是一个长整型属性,用来返回Recordset对象中的记录数目。若ADO无法确定记录数,则该属性值为1。AbsolutePosition属性也是一个长整型属性,用来返回当前记录的位置或设置目标记录相对于第一条
42、记录的位置,其取值在1到RecordCount之间。,注意:若对记录集进行了分页,则Eof、Bof、RecordCount属性值分别代表的是当前页的信息,而不是整个记录集的信息。,3ActiveConnection属性,该属性可以是Recordset对象相对应的Connection对象,也可以是Connection对象的连接字符串。如果是第二种情况,则相应的Connection对象将被隐式要创建,创建时所需要的参数均使用默认值。,10.3.2 Recordset对象的属性,4CacheSize属性,该属性是一个长整型属性,用来设置或返回缓存在本地内存中的记录数。使用CacheSize属性可控制
43、数据提供者在缓存中所保存的记录的数目,并可控制一次恢复到本地内存的记录数。例如,如果CacheSize为30,首次打开Recordset对象后,数据提供者将前面30条记录调入本地内存。当在Recordset对象中移动时,数据提供者返回本地内存缓冲区中的数据;一旦移动超过缓存中最后的记录,提供者便将数据源中随后的30条记录恢复到缓存。,5CursorType属性,用来设置或返回Record对象中使用的游标类型,是一个枚举类型值,枚举常量及其含义如表10-4所示。,10.3.2 Recordset对象的属性,6EditMode属性,该属性用来返回当前记录的编辑状态,也是一个枚举型的常量。取值及其含
44、义如表10-5所示。,10.3.2 Recordset对象的属性,7Filter属性,是一个字符串属性,存放的是一个逻辑表达式,用来进行记录的筛选,记录集中只有符合该条件的记录才会参加处理。给该属性赋值的一般形式如下: RecordsetObj.Filter=条件字符串 其中,条件字符串由“FieldName Operator Value”格式的子句(如“StuName=赵勇”)组成,各子句之间通过逻辑运算符连接。,(1)FieldName 必须为 Recordset 中的有效字段名。如果字段名包含空格,必须用方括号将字段名括起来。,注意点:,(2)Operator 必须为关系运算符,即:、=
45、、= 或 LIKE。,(3)Value 是用于与字段值(如 Smith、#8/24/95#、12.345 或 $50.00)进行比较的值。字符串使用单引号作为定界符,日期使用“#”号作为定界符,对于数字,可以使用小数点、货币符号和科学记数法。如果Operator为 LIKE,Value还可以使用通配符(“*”和“%”)。Value 不可为 NULL。,注意:如果数据提供者是SQL Server,日期型数据用“”括起来,而不是用“#”括起来。但对于Microsoft Access数据库,日期型数据一定要用“#”括起来。,10.3.2 Recordset对象的属性,8LockType属性,主要用在
46、多用户环境中,实现并发控制,属性值表示记录使用的锁定类型,是一个枚举类型的值,取值及其含义如表10-6所示。由于该属性默认值为adLockReadOnly,所以要创建一个可以更新的记录集,该属性值必须设置。,10MaxRecords属性,该属性是一个长整型属性,用来设定记录集对象能够包含的最多记录个数,默认设置为零,表明返回所有所需的记录。Recordset对象关闭时,MaxRecords 属性为可读可写,打开时为只读。,10.3.2 Recordset对象的属性,11Sort属性,字符串属性,用来设置或返回Recordset对象记录集中记录的排列顺序。该属性值是一个字段名或用逗号分隔的多个字
47、段名,在字段名后可选加空格和用于指定字段排列顺序的关键字 ASCENDING(升序) 和 DESCENDING(降序)。,12Source属性,用来设置或返回Recordset 对象中数据的来源,可以是Command对象、SQL 语句、表的名称或存储过程。Source 属性对于关闭的 Recordset 是可读可写的,对于打开的 Recordset 是只读的。如果设置 Source 属性为 Command 对象,Recordset 对象的 ActiveConnection 属性将继承指定 Command 对象的 ActiveConnection 属性的值。但是,读取 Source 属性将不返回
48、 Command 对象,而是返回Command 对象的 CommandText 属性值。,10.3.2 Recordset对象的属性,13State属性,该属性是一个长整型属性,用来指示Recordset对象的状态是连接、执行或是获取,是一个只读属性。取值及其含义如表10-7所示。,Recordset 对象的State属性可以是组合值。例如,如果正在执行语句,该属性将是adStateOpen和adStateExecuting的组合值。,10.3.3 Recordset对象的方法,1Cancel方法,使用该方法将终止异步执行的Execute或Open方法。如果试图终止的Execute或Open方
49、法不是异步执行的方法,则调用该方法将会产生运行错误。该方法的使用格式如下: Object.Cancel 其中,Object是要终止执行操作的对象名 。,使用该方法可取消对当前记录所作的更改或放弃新添加的记录。如果在调用AddNew方法后使用了CancelUpdate 方法,则调用AddNew之前的当前记录将再次成为当前记录。如果尚未更改当前记录或添加新记录,调用CancelUpdate方法将产生错误。 该方法的使用格式如下: RecordsetObj.CancelUpdate,2CancelUpdate方法,10.3.3 Recordset对象的方法,3CancelBatch方法,使用该方法将
50、取消批更新模式下记录集中所有挂起的更新。如果记录集处于立即更新模式,调用不带adAffectCurrent的CancelBatch将产生错误。该方法的使用格式如下: RecordsetObj.CancelBatch AffectRecords 其中,RecordsetObj记录集对象变量名。参数AffectRecords决定该方法影响的记录数 。,10.3.3 Recordset对象的方法,4Clone方法,该方法用来复制一份现有的Recordset对象。该方法的使用格式如下: Set RecordsetObj2= RecordsetObj1.Clone (LockType) 其中, Reco
51、rdsetObj1代表原来的记录集, RecordsetObj2代表复制的记录集。该方法有一个参数LockType,该参数只能取两个值:adLockUnspecified(默认值。使用与原始类型相同的锁定类型创建副本)和adLockReadOnly(副本创建为只读)。,5Open方法,该方法用来执行一条SQL语句或者调用数据库的存储过程以返回一个记录集。Open方法的使用格式如下: RecordsetObj.Open Source, ActiveConnection, CursorType, LockType, Options 其中RecordsetObj是记录集对象变量名,Source、Ac
52、tiveConnection、 CursorType、LockType与RecordSet对象相应属性的含义完全一致。Options参数的含义同Connection的Execute方法中的Options参数含义基本一致。,10.3.3 Recordset对象的方法,6Requery方法,该方法用来重新执行查询以便重新生成Recordset对象。该方法的使用格式如下: RecordsetObj.Requery 其中RecordsetObj是记录集对象变量名 。,7UpdateBatch方法,该方法的作用是将所有挂起的批更新写入到数据库。该方法的使用格式如下: RecordsetObj.Updat
53、eBatch AffectRecords 其中RecordsetObj是执行该方法的记录集对象变量名,10.3.3 Recordset对象的方法,8Resync方法,用现行数据库中的数据刷新当前Recordset对象中的数据,使用该方法将当前Recordset中的记录与现行数据库重新同步。这在使用静态或仅向前的游标但希望看到现行数据库中的改动时十分有用。与Requery方法不同,Resync方法不重新执行生成Recordset对象的查询,因此,现行数据库中刚添加的新记录将不可见。该方法的使用格式如下: RecordsetObj.Resync AffectRecords, ResyncValue
54、s,10.3.3 Recordset对象的方法,9Supports方法,该方法是将返回一个布尔型值,用来指示Recordset对象是否支持某种功能。该方法的使用格式如下: Boolean变量 = RecordsetObj.Supports( CursorOptions ) 其中Boolean变量是用来接收返回值的布尔型变量,RecordsetObj是执行该方法的记录集对象变量名,参数CursorOption的作用是指出是否支持的功能。,如果Recordset对象支持表10-10所示的相应常量的功能,那么Supports方法将返回True,否则将返回False。,10.3.4 访问Records
55、et对象中的字段的方法,访问Recordset对象中的字段,可使用字段名,也可以使用字段编号,字段编号从0开始。,假设Recordset对象StuRs的第一个字段名为“StuNo”,则访问该字段可使用下列方法:,StuRs (StuNo),StuRs (0),StuRs.Fields (StuNo),StuRs.Fields (0),StuRs1.Fields.Item (StuNo),StuRs1.Fields.Item (0),【例10-1】使用ADO的相应对象把SQL Server数据库CollegeMIS中的Teacher表中的数据显示出来。程序设计界面如图10-5所示,程序的运行界面
56、如图10-6所示。程序运行时,单击“显示”按钮将在MsFlexGrid控件中显示Teacher表中的所有教师信息;单击“关闭”按钮,将关闭ADO的相应对象并结束程序运行。,可在窗体的Load事件中通过Connection对象连接到SQL Server数据库CollegeMIS;在“显示”按钮的Click事件中通过Recordset对象产生记录集,记录集中的内容为表Teacher中的所有记录,并把记录集中的数据在MSFlexGrid控件中显示出来。要在MSFlexGrid控件中显示记录集的内容,可通过循环把记录集中的各字段的内容依次赋值给MsFlexGrid的MatrixText属性的各个元素。
57、为使程序通用,把在MSFlexGrid控件中显示记录集的内容定义成一个通用过程,过程应有两个参数,一个是要Recordset对象,另一个是MSFlexGrid对象。,实现思路:,程序代码参见实例。,10.4.1 Command对象简介,10.4.2 Command对象的常用属性,10.4.3 Command对象的常用方法,10.4 Command对象,10.4.1 Command对象简介,1作用,通常使用Command对象对数据库进行查询操作和对数据表进行增、删、改操作,利用它可以执行SQL语句、存储过程等,而且利用它还可以进行参数化查询。,(1)可以通过调用Connection对象的Exec
58、ute方法或调用Recordset对象的Open方法来执行查询,但若要多次执行命令文本,或使用查询参数时,则必须使用Command对象。,2使用Command对象的注意点:,(2)可把Command对象的ActiveConnection属性设置为有效的连接字符串以创建 Command对象,此时ADO仍将隐式创建Connection对象。如果多个Command对象使用相同的连接字符串,ADO也将为每个Command对象创建新的Connection对象。因此当需要让多个Command对象与同一个Connection对象相连时,必须显式地创建并打开Connection对象,然后把该Connectio
59、n对象变量赋给相应的Command对象的ActiveConnection 属性。,10.4.2 Command对象的常用属性,1ActiveConnection属性,该属性是一个可读可写的属性,用来指示Command对象通过哪个Connection对象操作数据库,取值可以是Connection对象名或连接字符串。在将该属性有效设置之前,不得调用Command对象的Execute方法,否则将会产生错误。,该属性是一个字符串属性,用来设置或返回Command对象所要执行的命令,可以是SOL语句、表名称或存储过程名,默认值为(零长度字符串)。需注意一点:使用的SQL 语句必须是数据提供者能够支持的特定版本。,2CommandText属性,3CommandTimeout属性,该属性是一长整型属性,用来设置等待命令执行的时间(单位为秒),默认值为30。如果在指定的时间内命令尚未执行成功,将终止执行并产生错误。,10.4.2 Command对象的常用属性,4CommandType属性,是一个可读写的枚举型属性,用来指定Command对象要执行命令的类型。能够使用的枚举常量有:AdCmdText、AdCmdTable、AdCmdTableDirect、AdCmdStoredProc、AdCmdUnknown、AdComma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 同济大学《民俗艺术》2024-2025学年第二学期期末试卷
- 佛山职业技术学院《固体废物监测与分析》2024-2025学年第二学期期末试卷
- 2026届江西省抚州市临川二中、临川二中实验学校生物高一下期末质量检测模拟试题含解析
- 嘉兴南洋职业技术学院《世界音乐文化》2024-2025学年第二学期期末试卷
- 吕梁职业技术学院《计算机文化基础》2024-2025学年第二学期期末试卷
- 2025-2026学年器乐造型奥尔夫教案
- 江苏省吴江市青云中学2026届高一数学第二学期期末学业水平测试模拟试题含解析
- 2025福建泉州石狮市蚶江镇卫生院招聘编外口腔医师护士药师24人笔试历年典型考题及考点剖析附带答案详解试卷2套
- 2025福建厦门海峡投资有限公司社会招聘6人笔试参考题库附带答案详解(3卷合一)
- 2025海南万宁市面向社会公开招聘医疗卫生专业技术人才98人(第1号)笔试历年典型考题及考点剖析附带答案详解试卷2套
- 2026河南郑州建设集团所属公司社会招聘工作人员44名笔试备考题库及答案解析
- 2026年春五年级下册数学教学计划(附教学进度表)
- 现在完成时复习课课件+2025-2026学年外研版八年级英语下册
- 初中地理《中国的地理差异》单元深度复习教学设计(以‘秦岭淮河’线为例)
- 2025年青岛农商银行春招笔试及答案
- 大疆社招在线测评题目
- 菏泽医专综评试题及答案
- GB/T 9944-2025不锈钢丝绳
- 高二数学开学第一课(高教版2023修订版)-【开学第一课】2025年春季中职开学指南之爱上数学课
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- 四川大学办公用房管理实施细则
评论
0/150
提交评论