




免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 数据库应用VB提供了大量的数据库应用方面的工具。本章从介绍VB数据库系统的体系结构入手,学习构造设计数据库及数据表。然后,描述了ActiveX Data Objects、DAO对象模型、数据环境、ADODB的数据库链接和访问方式。同时,还介绍了基于这些访问方式的程序设计方法和举例。学习重点:l 数据库和数据表的基本概念l ADO控件、DAO对象模型、ADODB、数据环境l 对象绑定、数据源l 记录集、记录指针7.1 Visual Basic 的数据库系统本章通过介绍VB数据库系统的体系结构,深入了解VB数据库的具体内容和处理方法。VB的ADO(ActiveX Data Objects)技术兼容并包含了以前的数据访问对象DAO(Data Access Object)和远程数据对象RDO(Remote Data Object)的数据库处理功能。ADO技术对各种类型的数据源具有更灵活的对象模型,更简单直接的处理方法。它通过OLE DB技术,既能访问本地的数据库,又能访问远程数据库;既能通过数据库引擎Jet,又能通过ODBC,甚至直接提供SQL,ORACLE大型数据库的链接方式访问数据源。在实际应用中,它能够处理任何类型的数据,而不考虑它们的格式和存储方法,比如,可以访问驻留在Excel的电子数据表,文本文件,甚至邮件服务器,诸如Microsoft Exchange中的数据。尤其ADO在关键的Internet方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,从而为其提供了轻量、高性能的数据接口。7.1.1 Visual Basic 数据库系统的体系结构Visual Basic数据库系统由物理数据库、OLE DB提供程序、用户应用程序三部分组成。OLE DB提供程序将物理数据库与应用程序连接起来,使用户应用程序层的操作更加规范,简单。你不必关心数据源的格式和存储方式,无论数据源是本地的还是远程的都无关紧要。1. 物理数据库物理数据库是按某种格式组织,并按某种方式存储的数据源集合。一个数据库可以包含若干个有关的数据表,数据表是一种按行和列排列的二维表格。例如,在Student.mdb中,可以有一个学生基本情况表StudentBase(见表7-1),一个成绩表StudentMark(见表7-2)等。表7-1学生基本情况表StudentBase学号姓名性别年龄出生日期021003林小芳女181984-03-16021008金大力男191983-12-08数据表中的每一列应存放具有类似意义的、相同类型的数据。我们把这样的列称作为字段,每个字段有自己的数据类型和长度,若干个字段组成了数据表的结构。例如,StudentBase数据表可以由学号StudentID、姓名Name、性别Sex、年龄Age、出生日期BirthDay等字段组成。StudentMark数据表可以由学号StudentID、课程名称CourseName、成绩Mark、考试日期ExamDate等字段组成。表7-2学生成绩表StudentMark学号课程名称分数考试日期021003VB程序设计912002-06-26021003英语862002-06-28021008VB程序设计752002-06-26数据表中的每一行数据称作为一条数据记录,它是按数据表字段有序排列的一个完整描述。例如,021003,林小芳,女,18,1984-03-16描述了一个同学StudentBase的完整信息。021003,VB程序设计,91,2002-06-26则描述了一个同学StudentMark的记录信息。数据表之间还可以通过关键字段(简称关键字)进行关联运算,例如,在StudentBase数据表中的某一位同学,可以通过他的学号StudentID作为关键字,在StudentMark数据表中将其所有选修课程的考试情况关联运算出来。2. OLE DB提供程序OLE DB 提供程序其实是一种驱动程序或数据处理低层接口,它是由一组ActiveX的DLL动态链接库文件组成。由于接口比较复杂,差异性较大,因此,不能在VB中直接访问OLE DB。而是采用通过ADO对象访问OLE DB的方法,从而实现各种OLE DB数据的访问。ActiveX 数据对象ADO封装,实际上实现了OLE DB的所有功能。因此,在VB中ADO对象使不同的数据库类型的操作是相同的。3. 用户应用程序用户应用程序包括用户界面和应用程序代码。应用程序代码对数据库操作的请求,经OLE DB的链接,分解并解释成一系列对物理数据库的操作指令,执行的结果再经OLE DB回传给应用程序的用户界面,以供浏览或进一步处理。7.1.2 Visual Basic的数据库链接和访问应用程序对数据库的处理主要由数据定义语言(DDL)和数据操作语言(DML)两部分组成。DDL的任务是定义和创建数据库本身的属性和方法,包括它的工作区、数据库、数据表、字段集合、索引和关系等。当我们用这种特定的对象变量定义好相关数据库的各个层次的结构时,就可以在用户应用程序中通过这些对象变量去访问我们想操作的数据库。此时,我们也可以说,用户应用程序与数据库建立了链接。不管这种链接是本地的数据库还是远程的数据库;不管是VB 默认的Microsoft Access数据库,还是其他数据库(例如,Foxpro,Dbase,Paradox),甚至是电子数据表、邮件、文本数据文件,一旦建立了数据库链接,以后的访问操作基本上是一样的。建立链接只需一次性定义。DML的任务是在DDL的基础上对数据库进行数据访问,包括浏览、新增、删除、编辑、查找、更新等。根据以上分析,对数据库的处理主要由DDL和DML两大部分组成,即在用户应用程序中常说的“链接”和“访问”。VB有四种数据库链接与访问的方式:OLE DB的ADO(ActiveX数据对象)控件链接与访问方式、DAO(数据访问对象)对象模型分层结构链接与访问方式、通过数据环境设计器的链接与访问方式、使用ADODB对象的链接与访问方式。1. ADO控件链接与访问方式使用ADO data控件只要对数据库、OLE DB提供程序和数据源(数据表或SQL数据集)进行适当的选择定义,就可以方便,迅速,简单地建立起用户应用程序与数据库操作之间的链接。通过绑定控件(例如:OLE DB控件Data Grid、DataList、DataCombo、基本控件TextBox、CheckBox、Label、PictureBox、ComboBox、ListBox等)的布局配合,在ADO data控件的控制下产生联动效应,在用户界面上直接反映数据库数据。进一步通过ADO data的Recordset方法,可以进行数据库的记录新增、删除,编辑、查找、更新等操作。这种方式既可以在设计时静态建立链接,也可以在运行时进行动态链接,甚至必要时,可以分别更改表的来源方式、更换不同表源、更换其他数据库。ADO 控件的使用方法是VB的最强有力手段之一,因此,Microsoft推荐尽量使用该方法。2. DAO的对象模型链接与访问方式DAO对象模型以嵌套式“对象含集合”的分层结构组成,以DBEngine(引擎)对象为顶层,它可以定义含若干WorkSpace(工作区)对象的集合;每个WorkSpace对象又可定义含若干DataBase(数据库)对象的集合;每个DataBase对象又可定义含若干TableDef(数据表)对象的集合;每个TabledDef对象又可定义含若干Field(字段)对象和索引(Index)对象的集合。对象模型分层定义,建立起一个数据库的完整链接后,就可以分层嵌套引用对应层的对象变量或其下的集合对象,并且可以响应自己的事件和执行自己的方法。通过用户应用程序代码可以直接、微观、灵活地操作数据库数据。DAO完全在运行时进行链接和访问。尽管这种方式,在程序设计时代码较多,对象变量群庞大,过程烦琐复杂,但在特定场合,还有一定的可用性。比如,在需要动态产生数据表结构的场合下,它的代码设计自由度就较大。这种方式的链接,开销较省,速度较快,而且与VB以往版本兼容性较好。3. 数据环境设计器的链接与访问方式数据环境设计器(Data Environment designer)为创建编程运行时数据访问提供了一个交互的设计时环境。在设计时,您不可以对Connection下的Command的已经定义好的内容进行变更,但可以更换另一个已经预先定义过的Command对象。您也可以拖动DataEnvironment对象到窗体或报表来创建数据绑定的控件,尤其适用于在多个窗体中需建立数据库链接,或在报表中需建立数据库链接的场合。一旦建立了链接,就会自动产生类似Recordset的rsCommandTable对象,以供各种场合进行数据访问。这种方式,完全基于可视化的基础。4. 使用ADODB的链接与访问方式这是VB的新对象,通过ADODB对象可以全部在应用程序的运行时建立数据库和数据表的链接,并通过相应的记录集Recordset访问数据源,同时,还可以绑定相关控件,方便地进行交互界面设计和控制。7.2可视化数据管理器在VB中通过数据访问控件或数据访问对象(DAO)可以访问下列数据库:l JET数据库,即Microsoft Access的mdb文件。l ISAM数据库,如:dBase,FoxPro等。l ODBC(开放式数据库互连)数据库,凡是遵循ODBC标准的客户/服务器数据库,如Microsoft SQL Server,Oracle等。一般来说,如果要开发一个小型数据库系统,用Access数据库比较合适,要开发大、中型的数据库系统用ODBC数据库更为适宜。VB默认的是Access数据库。建立Access数据库有两种方法:一是在Microsoft Access中建立数据库;二是在VB中直接创建。这里我们主要介绍利用VB提供的可视化数据管理器来建立我们先前描述的Student.mdb数据库和其下的StudentBase数据表。【例7-1】建立学生数据库Student.mdb。在该数据库里,建立数据表StudentBase“学生基本情况表”(见表7-1),数据表StudentMark“学生成绩表”(见表7-2)。具体操作步骤如下。1)从菜单栏选择“外接程序”/“可视化数据管理器”,进入VisData窗口。2)选择菜单:“文件”/“新建”/“Microsoft Accees”/“Version 7.0 MDB”,此时,出现“选择要创建的Microsoft Access数据库”对话框。3)在对话框中选择存放的合适目录,在文件名处填入“Student”,扩展名默认为mdb,单击“保存”按钮,系统自动产生Student.mdb数据库。4)在“数据库窗口”空白处单击鼠标右键,弹出快捷菜单,选择“新建表”,出现“表结构”窗口。在“表结构”中首先填入表名称“StudentBase”,单击“添加字段”按钮,出现“添加字段”窗口。如图7-1所示,填入它的第一个字段StudentID的有关信息(类型:Text;大小:50)。单击“确定”按钮,在“表结构”窗口里新增了一个StudentID字段。5)继续在“添加字段”窗口里依次增加字段:Name(Text,50),Sex(Boolean,1),Age(Integer,2),BirthDay(Date/Time,8)。最后,单击“关闭”按钮,返回“表结构”窗口,如图7-2所示。6)单击“生成表”按钮,建立StudentBase数据表,如图7-3左窗“数据库窗口”所示。7)用同样方法,可以建立数据表StudentMark。它包含字段StudentID(Text,50),CourseName(Text,50),Mark(Integer,2),ExamDate(Date/Time,8)。8)如果要输入数据可以在“数据库窗口”中鼠标右键单击StudentBase数据表,弹出快捷菜单,选择“打开”;或双击左键;或在“SQL语句”窗口中输入Select * from StudentBase语句后,单击“执行”按钮,出现如图7-3所示的数据表编辑窗口。9)在数据编辑窗口里单击“添加”按钮,出现“添加记录”的编辑窗口,如图7-4所示。分别输入981010,李慈凯,true,22,1978-02-16,再单击“更新”按钮,存入数据表中。重复添加,直至结束。10)如要修改,可单击“编辑”按钮;如要删除,可单击“删除” 按钮;如要结束,可单击“关闭” 按钮。11)最后,退出“可视化数据管理器”,返回VB系统。必要时,可以再次进入“可视化数据管理器”对数据库、数据表、字段、记录数据进行浏览、编辑、添加、删除、排序、过滤、查找等操作。如需提供进一步的操作功能,可直接进入Microsoft Access,操作基本相同,使用更加方便,提供的功能更加强大。7.3 VB数据库的链接与访问本节详细介绍了数据库的ADO(ActiveX数据对象)控件链接与访问方式、DAO(数据访问对象)对象模型分层结构链接与访问方式、通过数据环境设计器的链接与访问方式、使用ADODB对象的链接与访问方式。7.3.1 使用ADO控件建立数据库链接和数据访问使用ADO data控件,可以快速简便地建立数据库链接,配合数据绑定控件,进行数据快速浏览,这是目前最常用的方法之一,同时介绍了数据记录集Recordset方法的使用。1. ADO data控件ADO data是一个ActiveX控件,需要从菜单栏选择“工程”/“部件”,在“控件”选项卡中选择“Microsoft ADO Data Control 6.0(OLE DB)”,单击“确定”按钮,才会在工具箱中出现Adodc控件图标,如图7-5a所示。将该控件加入窗体,它是一个具有四个箭头按钮的图形控件,如图7-5b所示。建立Adodc控件与数据库的链接按如下操作步骤:1) 进入Adodc属性定义:在Adodc控件上单击鼠标右键,选择“Adodc属性”菜单;或者在图7-6a“属性”窗口里选择“自定义”项,进入“属性页”,如图7-6b所示。2) “通用”选项卡中,选择“使用连接字符串”选项,再单击“生成”按钮,出现“数据链接属性”窗口的“提供者”选项卡,如图7-7所示。3) 选择Microsoft Jet 3.51 OLE DB Provider,再单击“下一步”按钮,出现“连接”选项卡,单击浏览钮,选择合适路径下的数据库Student.mdb,如图7-8所示。再单击“测试连接”按钮,出现“测试连接成功”信息。最后,单击“确定”按钮,返回图7-6所示的“属性页”,在“使用连接字符串”下已经表明数据库与Adodc控件连接成功。4) 选择“记录源”选项卡,如图7-9所示。在“命令类型”下拉框中选择“2-adCmdTable”选项,在“表和存储过程名称”下拉框中选择数据表StudentBase;或在“命令类型”下拉框中选择“1-adCmdText”选项,在“命令文本(SQL)”处输入SQL命令(比如,select*fromStudentBase),获取数据表子集。单击“确定”按钮,Adodc控件与数据库的数据表链接设置完毕。综上所述,Adodc与数据库的链接主要定义了Adodc的三个属性:l ConnectionString=”Provider=Microsoft.Jet.OLEDB.3.51;PersistSecurityInfo=False;DataSource=E:XjldocVB6教学VB6实验Student.mdb”l CommandType=2(adCmdTable)l RecordSource=”StudentBase”(最终,关联到数据表或数据源集)或者l CommandType=1(adCmdText)l RecordSource=”Select*formStudentBase”(最终,关联到SQL数据源)除此之外,Adodc还有一些可以利用的属性(见表7-3)和事件(见表7-4)。表7-3Adodc控件的常见属性属性注释EOFAction遇EOF时的处理:0-停留在尾记录1-停留在EOF处2-允许新增BOFAction遇BOF时的处理:0-停留在首记录1-停留在BOF处Visible当使用ADO data控件仅仅为了链接,不需要可见时,设置True。Caption设置ADO data的标题名称。Orientation0- AdHorizontal(水平)1-adVertical(垂直)Enabled使有效(True)表7-4Adodc控件的事件事件产生条件WillMove当执行Recordset.Open、Recordset.Move组、Recordset.BookMark、Recordset.AddNew、Recordset.Delete、Recordset.Requery、Recordset.Resync方法时(当ADO记录指针将要产生移动时发生)。MoveComplete在WillMove事件之后(当ADO data记录指针移动后发生)。WillChangeField在Value属性更改之前。FieldChangeComplete在WillChangeField事件之后。WillChangeRecord当执行Recordset.Update、Recordset.delete、Recordset.CancelUpdate、Recordset.UpdateBatch、Recordset.CancelBatch方法时。RecordChangeComplete在WillChangeReord事件之后。WillCahngeRecordset在执行Recordset.Requery、Recordset.Resync、Recordset.Close、Recordset.Open、Recordset.Filter方法时。RecordsetChangeComplete在WillChangeRecordset事件之后。InfoMessage当数据提供者返回一个结果时。2. Data-Bound(绑定)控件虽然ADODC控件具有存取数据库记录信息的能力,但却没有显示数据的功能,这需要用到数据绑定控件。所谓“绑定”就是控件源源不断地从Adodc1中获取对应数据记录。任何绑定控件,最关键的是两个属性:“DataSource”和“DataField”。l DataSource:绑定数据源控件。一般为Adodc控件的对象名,使数据源记录指针所指向的当前信息与绑定控件同步。l DataField:绑定数据源的字段。建立一个独立数据控件与绑定数据源记录指针指向的记录信息中某字段的数据联动。l DataFormat:绑定控件显示数据的格式。尤其是日期、时间、财务数据、货币、图片等特殊格式。除了基本控件TextBox,Label,CheckBox,ComboBox,ListBox,PictureBox等可以作为绑定控件外,VB还提供了ActiveX的绑定控件,如DataGrid,DataCombo,DataList,Microsoft Char等OLE DB控件,其他还有DateTimePicker,Hierarchical FlexGrid,MonthView等也是很精彩的绑定控件。甚至用户可以创建自己的数据绑定ActiveX控件。下面对图7-10运行实例中的主要绑定控件类型进行说明。1) Label、TextBox、CheckBox绑定控件【例7-2】用Label、TextBox、CheckBox控件分别绑定数据库中StudentBase数据表的学生学号、姓名、性别、年龄、出生日期字段信息。布局如图7-10所示,直接将Label、TextBox、CheckBox控件加入窗体。对相应的绑定控件,如标签、文本框、复选框控件,设置它们的DataSource、DataField等属性。如表7-5所示。必要时,可以进一步设置其DataFormat,以适合数据格式(例如:txtBirthDay)。表7-5例7-2中Label、TextBox、checkBox绑定控件的设置控件名DataSourceDataFieldDataFormat解释LblStudentIDAdodc1StudentID学号TxtNameAdodc1Name姓名chkSexAdodc1Sex性别txtAgeAdodc1Age年龄txtBirthDayAdodc1BirthDay日期:dddd年m月d日出生日期2) DataGrid绑定控件在部件中,新增“Microsoft DataGrid Control 6.0 (OLE DB)”ActiveX控件DataGrid。从工具箱中添加入窗体。最简单、最快速地使用只需设置其DataSource=Adodc1即可。如果要仔细对DataGrid进行修饰,可以先选中它,单击右键,在快捷菜单中选“检索字段”,再选“编辑”,可以逐个设置其网格大小、删除、新增网格列。选择“属性”可以设置DataGrid属性,例如,“通用”页中可以输入标题显示名称,表格总体属性(见图7-11a);“列”页中可以设置列标题的名称(见图7-11b)。其它还有键盘、布局、颜色、字体、拆分、格式等页的属性设置。最后的DataGrid属性设置结果,如图7-10中的“学生基本情况表”所示。选择或浏览指定某学生,下面的绑定控件就能同步显示该学生的绑定字段信息,不必编写复杂的代码。图7-10中的其它功能,稍后再介绍。3)DataCombo和DataList绑定控件DataCombo和DataList属于ActiveX控件,如同使用其它ActiveX控件一样,需要添加“部件”,选取“Microsoft DataList Control 6.0 (OLE DB)”。这时,在工具箱里会出现DataCombo和DataList绑定控件图标。【例7-3】用Datalist控件显示学生姓名,用DataCombo控件显示学生学号。单击选择学生的姓名或学号,关联显示出该学生的全部课程和考试情况。步骤如下:l 建立工程文件ch07_03.vbpl 设计交互界面,如图7-12所示。在图7-12的例子中,单击左下角的DataList控件,选择学生姓名,可以在右下角的DataGrid2中显示该学生的全部课程和考试情况;同样,单击DataCombo控件,选择学生学号,可以关联出该学号学生的全部课程和考试情况,并显示在DataGrid2中。l 设置控件主要属性表7-6例7-3中Adodc控件与DataList和DataCombo绑定控件的属性设置控件名主要属性解释Adodc1RecordSource=StudentBase学生基本情况表Adodc2RecordSource=StudentMark学生课程分数表DataGrid1DataSource=Adodc1“学生基本情况表”显示表格DataGrid2DataSource=Adodc2“学生课程分数表”显示表格DataList1RowSource=Adodc1绑定Adodc1ListFiled=Name显示StudentBase中的Name字段BoundColum=StudentID当选中列表框中选项时,对应获取的文本内容BoundText会自动获取StudentID字段的相关信息(异字段绑定)DataCombo1RowSource=Adodc1绑定Adodc1ListField=StudentID显示StudentBase中的StudentID字段BoundColum=StudentID当选中下拉框中选项时,对应获取的文本内容BoundText会自动获取StudentID字段的相关信息(同字段绑定)Adodc1控件链接数据表StudentBase。DataGrid1控件绑定Adodc1仅作显示用,如前例所示。Adodc2链接数据表StudentMark。DataGrid2控件绑定Adodc2,显示学生的分数和相关课程。再将DataList1控件与Adodc1的Name字段绑定,显示学生姓名列表。单击选择学生姓名后,关联绑定Adodc1的StudentID字段,获取该信息后,用SQL语句重新更新Adodc2的RecordSource,并刷新DataGrid2的内容,使其仅显示该同学的全部选修课程成绩。同样,DataCombo1与Adodc1的StudentID绑定,下拉选择某学生的学号后,直接关联绑定StudentID字段本身,用SQL语句重新更新Adodc2的RecordSource,并刷新DataGrid2的内容,使其仅显示该同学的全部选修课程成绩。l 编写事件主要代码绑定控件DataList1和DataCombo1的Click事件代码基本相同,如下:Private Sub DataList1_Click() Adodc2.RecordSource=select*fromStudentMarkwhere StudentMark!StudentID= & _ DataList1.BoundText & SQL语句改变数据源 Adodc2.Refresh 刷新显示数据源End Sub其余设置,注意Adodc2的Orientation=1-adVertical(垂直浏览条),DataGrid的字段都有自己的列标题,DataGrid2还有自己的表标题名称“学生课程分数”。通过“检索字段”和“编辑”可以进一步细微设置网格的属性内容。3. ADO中与数据库组织结构相关的对象ADO中各对象间关系如图7-13所示。1) Field对象Field对象与数据表的字段对应,其属性见表7-7。表7-7Field对象的主要属性属性解释Name字段的名称Value字段的数据内容2) Fields对象Field对象的全体元素集合构成Fields集合对象,其示意见表7-8。表7-8Fields对象的编号编号Fields(0)Fields(1)Fields(2)Fields(3)Fields(4)Name属性StudentIDNameSexAgeBirthdayValue属性981005王海平1191978-8-193) Recordset对象Recordset对象与数据表对应,称作“数据记录集合”对象,是全体记录内容的集合对象。Recordset对象上层通过Adodc1控件绑定数据库Student.mdb中数据表StudentBase,下层通过Fields集合对象可以访问到具体的Field对象个体。Recordset对象的引用操作,见表7-9。表7-9Recordset对象的引用操作引用取值类型Adodc1.Recordset.Fields(0).NameStudentID字符串Adodc1.Recordset.Fields(0).Value981005字符串Adodc1.Recordset.Fields(1)王海平字符串Adodc1.Recordset.Fields(3)19数值Recordset对象还有许多属性和方法,利用这些属性和方法,可以完成数据库中的大多数操作。在例7-2的实例中,下面有“新增学生”、“注销学生”、“排序更新”等命令操作。在这些命令按钮的事件中,运用了ADO的Recordset对象的属性和方法,在程序运行时,动态完成数据记录的增加、删除和更新。使用Recordset的AddNew、Delete和Refresh等方法,实现新增学生、注销学生,更新DataGrid的数据显示。在“新增学生”按钮下的Click事件代码如下:Private Sub cmdAddNew_Click() “新增学生”按钮的Click事件 Adodc1.Recordset.AddNewEnd Sub此时,在DataGrid1的底部出现一空行,可以输入相关信息,最后字段内容输入完毕,该记录就保存在数据表StudentBase中了。此时,再单击“排序更新”按钮,该事件的Click事件代码如下:Private Sub cmdRefresh_Click() “排序更新”按钮的Click事件 Adodc1.CommandType = adCmdText 改变数据源的命令方式(SQL) Adodc1.RecordSource=select*fromStudentBaseorderbyStudentID Adodc1.Refresh 刷新显示DataGrid的数据源End Sub现在DataGrid1更新数据源,按StudentID关键字重新排序,并更新显示内容。如果你单击某记录,使其成为当前记录,再单击“注销学生”按钮,该学生的记录将被删除,该事件的Click事件代码如下:Private Sub cmdDelete_Click() “注销学生”按钮的Click事件 Adodc1.Recordset.DeleteEnd Sub单击“排序更新”按钮,DataGrid1按StudentID关键字重新排序,并更新显示内容。如果你将排序更新的代码放在“注销学生”按钮的Click事件后,程序就会自动删除并更新内容显示。常用的Recordset方法和属性如表7-10所示。表7-10Recordset的常用方法和属性方法方法/属性解释MoveFirst方法将记录指针移到首记录。MoveLast方法将记录指针移到尾记录。MoveNext方法将记录指针移到当前记录的下一条记录。MovePrevious方法将记录指针移到当前记录的上一条记录。Move n方法将记录指针移到当前记录的下n条记录。AddNw方法增加一条新的空记录。Delete方法删除当前记录。Edit方法当前记录进入编辑状态。Update方法将当前记录缓冲区里的数据写入数据表。Find 方法查找符合条件的第一条记录。Filter属性过滤满足条件的所有记录。Sort属性根据指定的字段排序。BookMark属性设置记录书签,以便快速返回。EOF属性记录指针试图到尾记录后(True)。BOF属性记录指针试图到首记录前(True)。RecordCount属性记录集中记录总数。Fields(index).Value属性由字段序号index指定字段的值。Fields(“字段名”)属性由字段名指定的字段值(同上)。Fields(index).Name属性由字段序号index指定字段名。Close方法关闭记录集。【例7-4】查找一位名叫“李慈凯”的学生。利用Recordset的Find方法,可以定位于该学生:Adodc1.Recordset.Find(“Name=李慈凯”)【例7-5】显示所有男学生的记录集合。利用Recordset的Filter属性,可以设置男学生的记录集合:Adodc1.Recordset.Filter=”Sex=True”【例7-6】对所有学生按年龄排序。利用Recordset的Sort属性,可以设置按年龄排序:Adodc1.Recordset.Sort=”Age”【例7-7】在StudentBase数据表中找一位年龄最小的学生,并显示其姓名、学号。利用Recordset的BookMark属性,记录最小年龄学生的记录位置:Adodc1.Recordset.MoveFirst 记录指针移到首min_age = Adodc1.Recordset.Fields(Age) 将第一位学生的年龄假设为最小年龄While Not Adodc1.Recordset.EOF 只要记录集未超尾记录 IfAdodc1.Recordset.Fields(Age)min_agethen 判断较小年龄bm=adodc1.Recordset.BookMark 记录较小年龄书签位置min_age= Adodc1.Recordset.Fields(Age) 记录较小年龄End if Adodc1.Recordset.MoveNext 移动记录指针至下一条Wendadodc1.Recordset.BookMark=bm 指向最小年龄学生记录书签txtName.Text = Adodc1.Recordset. Fields(Name) 显示最小年龄学生的姓名txtStudentID.Text = Adodc1.Recordset. Fields(StudentID”) 显示最小年龄学生的学号在例7-2的实例中,如果要统计StudentBase数据表中所有学生的平均年龄,可以通过其ADO的Recordset记录集对象进行编写代码。在“平均年龄”按钮的Click事件中,编写代码如下:Adodc1.Recordset.MoveFirst 记录指针移到首s = 0 年龄累计器While Not Adodc1.Recordset.EOF 只要记录集未超尾记录 s = s + Adodc1.Recordset.Fields(Age) 累加年龄总和 Adodc1.Recordset.MoveNext 移动记录指针至下一条WendText1.Text = s / Adodc1.Recordset.RecordCount 计算平均年龄MsgBox 平均年龄计算完毕!【例7-8】编写一个可以按学号、姓名、年龄、出生日期方式查找学生个人资料的应用程序,运行窗口如图7-14所示。步骤如下:l 建立工程文件ch07_08.vbpl 设计交互界面,如图7-14所示。l 设置控件对象属性,见表7-11。表7-11例7-8控件属性设置控件名主要属性解释Adodc1RecordSource=StudentBase链接数据库中数据表StudentBaseoptChoose(i)Caption:按学号i=0;按姓名i=1;按年龄i=2;按出生日期i=3数组控件,选择“查找方式”txtInput输入“查找关键字”cmdFindCaption=查找“查找”命令按钮lblStudentIDDataField=StudentID学号绑定Adodc1lblNameDataField=Name姓名绑定Adodc1chkSexDataField=Sex性别绑定Adodc1lblAgeDataField=Age年龄绑定Adodc1lblBirthdayDataField=Birthday出生日期绑定Adodc1在“输入信息”处输入查找关键字(例:李慈凯),选择查找方式:按学号、按姓名、按年龄、按出生日期,单击“查找”按钮,在“个人资料”栏显示相关信息,否则,给出“没有输入查找关键字!”的信息。首先将Adodc1控件与数据库Student.mdb的数据表StudentBase链接,同时将“个人资料”的学号、姓名、性别、年龄、出生日期与相应字段绑定。如果需要也可以将Adodc1的Visible属性设置为False,仅作链接而已。l 主要控件对象的代码Public Mode_String全局变量:查找条件合成串Private Sub optChoose_Click(Index As Integer)查找方式选择的Click事件 Select Case Index Case 0:按学号(字符型)查找 Mode_String = StudentID= & txtInput.Text Case 1:按姓名(字符型)查找 Mode_String = Name= & Trim(txtInput.Text) & Case 2:按年龄(数值型)查找 Mode_String = Age= & txtInput.Text Case 3:按出生日期(日期型)查找 Mode_String = Birthday=# & txtInput.Text & # End Select cmdFind.Enabled = True“查找”按钮有效。选择新方式后,结合关键字生成条件串End SubPrivate Sub txtInput_LostFocus() cmdFind.Enabled = False“查找”按钮无效。新输入关键字,重新选择查找方式End SubPrivate Sub cmdFind_Click()“查找”命令Click事件 If Len(Trim(txtInput.Text) = 0 Then没有输入关键字 MsgBox 没有输入查找关键字! Exit Sub End If Adodc1.Recordset.MoveFirst记录指针复位 Adodc1.Recordset.Find (Mode_String)调用Find方法,条件合成字符串 If Adodc1.Recordset.EOF Then MsgBox 没有找到此人! End IfEnd Sub7.3.2 使用DAO对象模型建立数据库链接和数据访问数据访问对象DAO可以用来创建数据库,定义数据表、字段和索引等,它具有一整套程序代码设计的全部对象属性和方法。对象的层次结构严格,使用灵活,资源开销较小,但代码量稍大,维护修改不易。1. DAO对象模型的结构DAO的分层结构如图7-15所示。该图体现了对象之间的层次关系,一个对象可以包含下层的同类对象集合,同时自己又是上一层对象的成员之一。清晰的层次关系,会使我们在编程中嵌套引用语法正确。DAO的顶层是DBEging对象,它是唯一不被其他对象所包含的的数据访问对象。它拥有一个名叫Workspaces的集合(集合的名字总是它所包含的对象名字的复数),该对象集合包含了若干个Workspace对象。每个workspace对象又有一个Databases集合,该对象集合包含了若干个Database对象。每个Database对象又可以包含若干个Recordset对象、或若干个TableDef对象等。每个Recordset对象和TableDef对象又包含若干个Field对象等。2. DAO变量的定义如果要进行DAO方式的程序编码,首先要引用DAO库。具体操作步骤为:选择菜单栏“工程”/“引用”,在引用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年汉中市中医医院招聘考试真题
- 2024益阳医学高等专科学校单招《物理》题库检测试题打印及答案详解
- 护理分级管理培训课件
- 二年级数学计算题专项练习集锦
- 2024-2025学年度漳州职业技术学院单招《物理》能力检测试卷及参考答案详解(夺分金卷)
- 河北法律基础(08118)2025年10月高等教育自学考试试题与答案
- 2024长沙轨道交通职业学院单招《物理》考试彩蛋押题附答案详解【考试直接用】
- 2024年驻马店幼儿师范高等专科学校辅导员考试真题
- 西藏公务员行测真题(A类)
- 2024年内蒙古锡林郭勒盟锡林浩特热电公司招聘笔试真题
- 加油站有限空间安全警示牌
- 安全员的任职条件及职责
- 资产评估收费管理办法(2023)2914
- 出师表标准注音版修正版
- 孤独症康复教育人员上岗培训练习题库及答案
- 篮球比赛记录表A4版
- 机械设备投入计划及保证措施
- 小儿清热止咳口服液产品知识-课件
- 钢 筋 检 查 记 录 表(钢筋加工及安装)
- 附件9:未取得国外国籍的声明
- 一般自我效能感量表(GSES)
评论
0/150
提交评论