




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章数据库技术
客观世界中的数字、文本、图形、声音、图像等信息在计算机中统称为数据,如何对大量的数据进行管理是多年来一直需要解决的问题。随着计算机技术的发展,数据库技术已经成为计算机应用技术中的一个重要组成部分,使用数据库技术可以方便、有效的对数据进行管理。VB提供了强大的数据库操作功能和丰富的工具,可以对多种数据库进行访问。本章将介绍数据库的基本概念、可视化数据管理器的使用、使用DAO或ADO的方法访问数据库、使用数据报表设计器进行简单的报表制作。第10章数据库技术
10.1数据库的基本概念10.2可视化数据管理器10.3使用DAO方法访问数据库10.4使用ADO方法访问数据库10.5报表
10.1
数据库的基本概念
数据库即存储数据的“仓库”,是以一定的组织方式将相关联的数据组织在一起并存储在计算机外存储器上,能够为多个用户共享、独立于应用程序的数据集合。数据库具有如下特征:(1)数据结构化,数据库中的数据是按一定的数据模型组织的。(2)数据共享,数据库中的数据可以被各种合法的用户共享,可以提高数据的利用率,减少了数据的冗余度。(3)数据独立性,数据库的数据存储与应用程序之间是相互独立互不影响的。本章所讨论的数据库是关系数据库。返回10.1数据库的基本概念10.1.1关系数据库的结构
10.1.2数据库的分类
10.1.3访问数据库的方法返回10.1.1关系数据库的结构1.数据表关系数据库是由若干个二维数据表组成,数据表也叫关系,简称表(Table),由若干个记录组成,每行称为一个记录,每列称为一个字段。2.字段和记录数据表中的每一列即一个字段(Field),每个字段表示实体在某一个方面的属性,数据表的第一行表示各个属性的名称,称为字段名,例如“学号”、“姓名”、“成绩”等都是字段名。从第二行开始,数据表中的每一行都称为一条记录(Record),它是由若干个字段的值组成的,表示该数据表中的一条完整的信息。返回10.1.1关系数据库的结构3.关键字在数据表中可以唯一地标识一条记录的字段称为侯选关键字,侯选关键字可能是一个字段,也可能是几个字段的组合。如果一个表中有多个侯选关键字,可以指定其中一个作为数据表的主关键字,也称为主键(PrimaryKey)。在数据表中,主键的内容不能为空。10.1.1关系数据库的结构4.索引为了提高数据库中数据访问的效率,可以在数据库中建立索引(Index)。设置了索引后数据库管理系统会建一个索引表,索引表是一种特殊的较小的表,表中含有索引字段的值和对应在实际数据表中记录的位置,当访问数据时,通过索引表可以快速确定访问记录的位置,再从表中读取出数据,所以使用索引可以大大的提高数据的检索速度。10.1.2数据库的分类
一般在VB中访问的数据库有三种:Jet数据库、ISAM数据库和ODBC数据库。(1)Jet数据库
MicrosoftJet是Access和VisualBasic使用的一种数据库引擎,具有灵活和速度快的特点,VB的可视化数据管理器可以建立和管理Access数据库。(2)ISAM数据库
ISAM是索引顺序访问方法的英文缩写,包括Dbase、FoxPro、Paradox和TextFiles都属于ISAM数据库,VB可以建立和管理这些数据库。(3)ODBC数据库
ODBC即开放数据库互连,是微软提出的数据库访问接口标准,遵循ODBC标准的客户/服务器数据库包括MicrosoftSQLServer,Oracle,Sybase等,VB可以使用任何支持ODBC的数据库。返回10.1.3访问数据库的方法
数据访问接口是一个对象模型,包括了访问数据的各个方面,VB6.0提供了三种数据访问接口:RDO(RemoteDataObjects)远程数据对象、DAO(DataAccessObjects)数据访问对象和ADO(ActiveXDataObjects)ActiveX数据对象。本章主要介绍使用DAO和ADO访问数据库的方法。返回10.2可视化数据管理器
使用VB开发数据库应用程序时,数据库有很多种选择,例如FoxPro、Paradox、Access、Dbase、SqlServer、Oracle等。用户可以使用各数据库本身的应用程序建立数据库,也可以使用VB提供的可视化数据管理器(VisData)来建立,VisData支持对Access、Dbase、FoxPro、Paradox和TextFiles的建立和管理。本节以Access为例介绍一下使用VisData的方法。返回10.2可视化数据管理器10.2.1新建数据库
10.2.2打开数据库
10.2.3添加数据表
10.2.4数据的编辑
10.2.5数据的查询返回10.2.1新建数据库1.启动可视化数据管理器打开VisualBasic6.0进入到集成开发环境中,选择“外接程序”菜单中的“可视化数据管理器”命令将启动可视化数据管理器,弹出“VisData”窗口。2.建立Access数据库在“VisData”窗口单击“文件”菜单,选择“新建”子菜单下的“MicrosoftAccess”下的“Version7.0MDB”选项,在弹出的对话框选择Access数据库的保存位置以及数据库的文件名,然后单击“保存”按钮就完成了数据库的建立。返回10.2.2打开数据库
当需要打开一个数据库时,也是使用“VisData”窗口。在“VisData”窗口单击“文件”菜单,选择“打开数据库”子菜单下的“MicrosoftAccess”选项,将弹出“打开MicrosoftAccess数据库”对话框,在该对话框中进入Access数据库所在的文件夹然后选择数据库文件,单击“打开”按钮将打开一个Access数据库。返回10.2.3添加数据表
新建立的Access数据库只是空数据库,数据库中的数据是存放在数据表中的,需要向数据库中添加数据表才能存储和管理数据。1.设计数据表结构在建立数据表之前,需要先设计数据表的结构,即确定数据表由哪几个字段构成、各字段的名称、各字段的类型和各字段的大小等。例如学生学籍表的结构如表10-1所示。返回10.2.3添加数据表2.建立数据表建立数据库之后,在“VisData”窗口将出现“数据库窗口”,在“数据库窗口”中单击鼠标右键,在弹出的快捷菜单中选择“新建表”命令将弹出“表结构”对话框。用户通过“表结构”对话框来建立数据表,操作步骤如下:(1)输入表名称在“表结构”对话框的“表名称”文本框中输入表的名称,例如“学生学籍表”。10.2.3添加数据表(2)添加字段单击“添加字段”按钮将打开“添加字段”对话框。(3)输入字段信息在“添加字段”对话框输入字段的基本信息:在“名称”文本框输入字段名,如“学号”,在“类型”下拉框中选择字段类型,如“Text”,在“大小”文本框输入字段的大小,再输入字段的其他信息。(4)添加其他字段输入完以上信息后,单击“确定”按钮将字段添加在表中,然后继续添加其他字段的信息。
10.2.3添加数据表(5)返回“表结构”对话框当所有字段添加完成后,单击“关闭”按钮返回“表结构”对话框。(6)建立索引在“表结构”对话框中单击“添加索引”按钮将打开“添加索引”对话框,在该对话框中设置索引。(7)所有设置完成之后,单击“表结构”对话框中的“生成表”按钮。10.2.3添加数据表3.修改数据表结构当数据表建立之后需要修改表的结构,可以在“VisData”窗口的“数据库窗口”中右击需要修改的数据表,将弹出快捷菜单。在快捷菜单中选择“设计”命令,将打开“表结构”对话框,在对话框中可以对数据表的信息进行修改,包括添加字段、修改字段信息、删除字段、添加索引、修改索引信息、删除索引等。10.2.4数据的编辑
在建立了数据表确定了表结构以后,数据表只是一个空表,利用可视化数据管理器,可以方便的对数据表添加数据并进行数据的编辑。打开数据库后,在可视化数据管理器的“数据库窗口”中会显示当前数据库的所有数据表,在可视化数据管理器的工具栏选择好记录集类型和数据显示类型后可以开始进行数据编辑,下面以“在新窗体上使用Data控件”的数据显示类型为例介绍操作步骤。返回10.2.4数据的编辑(1)在“数据库窗口”中右击需要编辑的数据表,在弹出的快捷菜单中选择“打开”命令。(2)单击“添加”按钮将添加一条空记录,输入各字段的值之后单击“更新”按钮将新记录写入数据表,重复本步骤可以继续添加其他记录。(3)使用最下边的Data控件的滚动按钮可以显示不同的记录,四个按钮分别对应“显示第一条记录”、“显示前一条记录”、“显示后一条记录”和“显示最后一条记录”。10.2.4数据的编辑(4)显示某条记录后,可以直接对各字段的值进行修改,修改完成后单击“更新”按钮将更新数据表的数据。(5)单击“查找”按钮后输入查询表达式可以显示满足条件的记录。(6)单击“删除”按钮可以删除当前记录。(7)单击“刷新”按钮将重新跳到第一条记录。(8)单击“关闭”按钮可以退出数据编辑窗口。10.2.5数据的查询
如果用户需要查找符合某些条件的记录,那么查找出来的记录将组成一个新的数据集合,这个集合其实也是以数据表的形式存在,这个数据表称为查询。可视化数据管理器提供了使用查询生成器和使用SQL语句这两种方法来建立查询。1.结构化查询语言结构化查询语言(StructuredQueryLanguage,SQL)是一种用于访问数据库的语言,通过SQL语句可以建立数据库和数据库对象,还可以进行数据的查询、修改、插入和删除等操作。返回10.2.5数据的查询SQL包括四个部分:数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。这里主要介绍一下数据查询语言,即SELECT语句。语句的格式如下:
SELECT[ALL|DISTINCT]<字段列表>FROM<表名>[WHERE<查询条件>][GROUPBY<分组字段>][HAVING<筛选条件>][ORDERBY<排序字段>[ASC|DESC]]10.2.5数据的查询SELECT语句的功能是查询出满足条件的记录,下面对SELECT语句进行说明:(1)SELECT和FROM是该语句的关键字,是必不可少的部分。(2)ALL|DISTINCTALL表示查询的结果允许重复记录,DISTINCT表示只显示重复记录的其中一条,如果省略,默认值是ALL。(3)字段列表字段列表的作用是指定查询结果中显示的字段。10.2.5数据的查询(4)表名表名是指数据表的名称,用于指定需要查询的数据表,可以是一个表或多个表,例如:查询学生成绩表的所有记录,显示所有字段,语句如下:SELECT*FROM学生成绩表查询学生学籍表的所有记录,只显示学号、姓名和出生年月3个字段,语句如下:SELECT学号,姓名,出生年月FROM学生学籍表10.2.5数据的查询(5)查询条件在WHERE关键字后的是查询条件,用于指定查询结果需要满足的条件。查询条件是一个逻辑表达式,该表达式除了可以使用关系运算符和逻辑运算符,还可以使用Between、Like和In等运算符,还可以使用“*”、“?”等通配符。(6)分组字段在GROUPBY关键字后的是分组字段,表示查询结果按分组字段进行分组显示,一般结合统计函数进行分组统计,统计函数如表10-2所示。10.2.5数据的查询(7)筛选条件
HAVING子句一般是与GROUPBY联合使用的,在HAVING关键字之后是筛选条件,表示按分组字段分组后只显示满足条件的记录。(8)排序字段在ORDERBY关键字后的是排序字段,表示查询的结果按字段值进行排序,ASC是升序,DESC是降序,缺省的默认值是ASC。10.2.5数据的查询2.使用SQL语句建立查询在可视化数据管理器的“SQL语句”窗口建立查询,操作步骤如下:(1)在输入框中输入SQL语句。(2)单击“执行”按钮。如果输入SQL语句有错,将给出错误提示,如果输入的SQL语句合法,将弹出询问消息框,消息框提示“这是SQL传递查询吗?”,单击“否”按钮即可显示查询的结果。(3)单击“保存”按钮,在弹出的对话框中输入查询的名称并单击“确定”按钮就可以将查询保存在数据库中。(4)如果在输入框需要删除SQL语句,可以单击“清除”按钮。10.2.5数据的查询3.使用查询生成器建立查询在可视化数据管理器中有两种打开查询生成器的方法:选择“实用程序”菜单中的“查询生成器”命令、右击“数据库窗口”,在弹出的快捷菜单选择“新建查询”命令。在打开“查询生成器”之后,建立查询,操作步骤如下:(1)在“表”列表框中单击要建立查询的数据表,单击之后该数据表的所有字段将出现在“要显示的字段”列表框中。如果需要取消某数据表的选择,再次单击“表”列表框中数据表即可。10.2.5数据的查询(2)在“要显示的字段”列表框中选择在查询的结果中需要显示的字段,单击某字段表示选择,再次单击表示取消。(3)利用“字段名称”、“运算符”和“值”三个下拉列表框构造查询的条件。在输入“值”的时候可以单击“列出可能的值”按钮之后选择一个值。(4)单击“将And加入条件”按钮或“将Or加入条件”按钮,将查询的条件表达式添加到“条件”列表框中。10.2.5数据的查询(5)继续(3)、(4)的操作可以建立多个条件组合而成的条件表达式。(6)单击“显示”按钮可以显示对应的SQL语句。(7)单击“保存”按钮,在弹出的对话框中输入查询的名称并单击“确定”按钮就可以将查询保存在数据库中,保存后的查询将显示在“数据库窗口”中。当保存了查询后,右击这个查询,在弹出的快捷菜单中单击“设计”命令,在“SQL语句”窗口中将显示此查询对应的SQL语句。10.2.5数据的查询(8)单击“运行”按钮将弹出询问消息框,消息框提示“这是SQL传递查询吗?”,单击“否”按钮即可显示查询的结果。当建立查询时,在“表”列表框如果选择了多个表,表示要进行多表查询,进行多表查询需要先联结这几个表。建立表间的联结也是在“查询生成器”中设置,操作步骤如下:(1)单击“设置表间联结”按钮,将打开“联结表”窗口。(2)在“选择表对”列表框选择需要联结的两个表,在“选择联结上去的字段”两个列表框中将分别显示这两个表的所有字段。10.2.5数据的查询(3)在列表框中分别选择两个表的联结字段。(4)单击“给查询添加联结”按钮添加联结。(5)重复以上(2)、(3)、(4)步骤可以继续添加其他联结。(6)建立了表间的联结之后就可以进行多表查询了。10.3使用DAO方法访问数据库
在VB中提供了Data控件,Data控件将常用的DAO功能封装在其中,使用Data控件用户几乎不用编写代码就可以对数据库的进行访问。使用Data控件可以减少程序的代码数量,提高应用程序的开发效率。
Data控件只适合较小的数据库开发,当需要开发较复杂和完善的数据库应用程序时,可以使用数据访问对象DAO来进行开发,这是过去常用的方法。DAO模型提供了一些对象,用户通过这些对象的属性和方法就可以实现对数据库的访问和操作。返回10.3使用DAO方法访问数据库10.3.1Data控件10.3.2数据绑定控件10.3.3DAO对象10.3.4使用DAO对象访问数据库10.3.5DAO对象编程实例返回10.3.1Data控件Data控件是VB提供的访问数据库的标准控件,使用Data控件可以无缝地访问多种数据库,例如Access、dBASE、Foxpro、Paradox等,还可以通过开放式数据库连接(ODBC)访问服务器型数据库,例如SQLServer、Oracle等。1.Data控件的常用属性
Data控件的公共属性,例如外观、位置、字体等属性设置与其他控件类似。这里主要介绍Data控件常用的数据属性,这些都是与访问数据库相关的属性。返回10.3.1Data控件(1)Connect属性该属性用于设置Data控件所连接的数据库类型,默认值是Access,一般在属性窗口中选择一种数据库类型即可。也可以在代码窗口通过语句来设置,例如:
Data1.Connect="FoxPro3.0"'将Data1访问的数据库类型设置为FoxPro3.010.3.1Data控件(2)DataBaseName属性该属性用于设置Data控件连接的数据库的文件名,包括完整的路径,通常在属性窗口设置。也可以在代码窗口用语句设置,例如,将控件Data1连接的数据库设置为“D:\mydata\student.mdb”,语句如下:
Data1.DataBaseName="D:\mydata\student.mdb"10.3.1Data控件(3)RecordSource属性该属性表示数据的来源,即Data控件的绑定控件的记录源。该属性的值可以设置为一个表、一个查询或者一条SQL语句。由RecordSource属性确定的数据构成一个记录集(RecordSet)。RecordSet是一个对象,用户可以编写代码,在代码中使用对象的属性和方法对数据库进行访问。【例10-1】通过Data控件连接数据库student.mdb,将“学生学籍表”的各字段内容显示在各文本框中。10.3.1Data控件2.Data控件的常用方法(1)Refresh方法该方法用于打开或重新打开Data控件连接的数据库并更新Data控件的记录集。在实际应用中,当Data控件的DataBaseName、ReadOnly、Exclusive或Connect属性发生改变时,更新了记录源的数据时,需要使用Refresh方法更新显示的数据。10.3.1Data控件(2)UpdateControls方法该方法的作用是重新读取Data控件产生的记录集中的数据并显示在数据绑定控件中。当用户对数据绑定控件的数据进行修改后,使用该方法可以恢复为修改前的数据,即取消用户对数据的更改。(3)UpdateRecord方法该方法与UpdateControls方法的作用相反,用于将数据绑定控件的数据写入到数据库中,即当用户修改了数据以后保存到数据库中。10.3.1Data控件【例10-2】在例10-1的基础上加入保存功能,用户可以直接在各文本框中修改当前记录的数据,单击“取消”按钮可以恢复为修改前的数据,单击“保存”按钮可以将修改后的数据存入数据库。10.3.1Data控件3.Data控件的记录集对象当Data控件连接了数据库并设置了RecordSource属性后将构成一个记录集(RecordSet),RecordSet是一个对象,用户可以利用RecordSet对象的属性和方法来访问数据库。(1)AbsolutePosition属性
AbsolutePosition属性返回当前的记录指针的值,若指向第一条记录则对应的值为0,第二条记录对应的值为1,以此类推。该属性为只读属性。10.3.1Data控件(2)BOF属性
BOF属性用于判定当前记录指针是否在第一条记录之前,若是则返回True,否则返回False。(3)EOF属性
EOF属性用于判定当前记录指针是否在最后一条记录之后,若是则返回True,否则返回False。(4)Nomatch属性在记录集中查找记录时,如果找到相匹配的记录则Nomatch属性的值False,否则该属性的值为True。10.3.1Data控件(5)RecordCount属性该属性用于返回RecordSet对象的记录个数。RecordSet对象的常用方法有以下几个:(1)Move方法组
RecordSet对象的Move方法组可以实现Data控件中各按钮的功能,即移动记录指针指向某条记录。Move方法组包括以下五种方法:①MoveFirst方法,移动当前记录指针使之指向记录集的第一条记录。10.3.1Data控件②MovePrevious方法,移动当前记录指针使之指向记录集当前记录的前一条记录。由于该方法不会自动检查是否超出记录集的边界,所以需要使用BOF属性来判断,例如:Data1.RecordSet.MovePreviousIfData1.RecordSet.BOFThenData1.RecordSet.MoveFirstEndIf10.3.1Data控件③MoveNext方法,移动当前记录指针使之指向记录集当前记录的后一条记录。该方法需要使用EOF属性判断是否超出记录集边界。④MoveLast方法,移动当前记录指针使之指向记录集的最后一条记录。⑤Moven方法,从当前记录移动|n|条记录。如果n为正整数则向后移动n条记录,如果n为负整数则向前移动-n条记录。【例10-3】在例10-1的基础上向窗体添加4个命令按钮,用于代替Data控件各按钮的作用。10.3.1Data控件(2)Find方法组
RecordSet对象的Find方法组用于查找记录集中符合条件的记录,如果找到满足条件的记录则将记录指针指向该记录。Find方法组有四种方法:①FindFirst方法,查找记录集中满足条件的第一条记录。②FindPrevious方法,查找记录集中满足条件的前一条记录,即从当前记录向前查找符合条件的记录。10.3.1Data控件③FindNext方法,查找记录集中满足条件的后一条记录,即从当前记录向后查找符合条件的记录。④FindLast方法,查找记录集中满足条件的最后一条记录。Find方法需要加上条件表达式,例如:Data1.Recordset.FindFirst"姓名='张三'"'查找姓名为“张三”的第一条记录10.3.1Data控件(3)AddNew方法
RecordSet对象的AddNew方法用于在记录集末尾添加一条新的空记录。在实际应用中,使用该方法后,接着在数据绑定控件中输入该记录各字段的值,此时该记录并未真正添加到数据库中,需要使用RecordSet对象的Update方法或Data控件的UpdateRecord方法或移动当前记录指针才可以将新记录保存在数据库中。10.3.1Data控件(4)Update方法
RecordSet对象的Update方法用于保存数据到数据库中,该方法的作用类似于Data控件的UpdateRecord方法。(5)Delete方法
RecordSet对象的Delete方法用于删除当前记录,在该方法使用之后应该移动记录指针使数据绑定控件显示其他记录的数据。由于删除的记录数据无法恢复,所以在实际应用中应该给出删除记录的提示信息,当用户确认后再删除。10.3.1Data控件【例10-4】在例10-2的基础上向窗体添加2个命令按钮,实现新增记录和删除记录的功能。4.Data控件的常用事件(1)Reposition事件当一条记录成为当前记录时将触发Data控件的Reposition事件,如单击Data控件的按钮,使用Data控件的记录集的某个Move方法、Find方法或者使用其他改变当前记录的属性或方法时都会触发该事件。10.3.1Data控件(2)Validate事件
在某条记录成为当前记录之前或者使用Data控件的记录集的Update方法、Delete方法、Close方法之前或者卸载窗体之前将会触发Data控件的Validate事件。Validate事件的格式如下:PrivateSubData控件名_Validate(ActionAsInteger,SaveAsInteger)Endsub
参数Action用于判断是哪种操作触发了该事件,Action值对应的操作如表10-3所示。10.3.1Data控件
参数Save是一个逻辑值,表示连接的数据是否被修改,如果值为True表示数据已修改,否则表示数据未被修改。当退出Validate事件时若Save的值为True则保存对数据的修改,否则不保存修改。10.3.2数据绑定控件Data控件用于连接数据库和访问数据库,但是Data控件没有显示数据的功能。Data控件需要与具有数据感知功能的控件结合起来才能实现数据的显示和编辑功能,VB提供了一些具有数据感知功能的控件用于显示Data控件产生的数据集的数据,在显示之前需要设置这些控件的属性来绑定数据集的数据,所以这些控件称为数据绑定控件(DataboundControl)。1.常用的数据绑定控件
VB提供的数据绑定控件一般用于显示数据集中的某个字段值,不同的控件适合绑定不同数据类型的字段。返回10.3.2数据绑定控件以下标准控件可以作为数据绑定控件:(1)Label控件
Label控件可以显示文本型的字段值,Label控件只能显示,不能编辑。(2)TextBox控件
TextBox控件是最常用的一种数据绑定控件,一般用于显示数据类型为文本型、数值型和日期时间型的字段值,使用TextBox控件还可以编辑数据。10.3.2数据绑定控件(3)CheckBox控件
CheckBox控件一般用于绑定逻辑型的字段,例如婚否、党员否等字段。(4)ListBox和ComboBox控件这两个控件一般用于绑定有一系列固定值的字段,例如籍贯、年龄等字段。(5)Image和PictureBox控件这两个控件都用于显示图形或图片。10.3.2数据绑定控件2.数据绑定控件的属性数据绑定控件需要设置以下两个属性。(1)DataSource属性
DataSource属性用于设置要绑定的Data控件的名称,例如Data1。该属性只能在属性窗口设置。(2)DataField属性设置了DataSource属性之后,在属性窗口的DataField属性的下拉列表将列出数据集的所有字段,选择其中一个即绑定了该字段。10.3.3DAO对象DAO提供了两种不同的对象模型,一种对象模型是通过Jet引擎来访问数据,另一种对象模型是通过ODBCDirect来访问数据。这里主要介绍前一种对象模型,通过Jet引擎来访问数据,该模型常用的对象如下:1.DBEngine对象
DBEngine对象包含了两个重要的集合,一个是Errors集合,另一个是Workspaces集合。返回10.3.3DAO对象2.Error对象在发生数据库操作错误时,可以使用Error对象来进行错误处理,也可以把错误信息保存在Error对象中。Error对象的主要属性如下:(1)Description属性该属性用于设置错误警告的信息提示。(2)Number属性该属性表示产生错误的错误序号。10.3.3DAO对象(3)Source属性该属性表示产生错误的对象名。3.Workspace对象
Workspace对象是DBEngine对象的一个数据库会话(Session)。会话描述出由MicrosoftJet数据库引擎完成的一系列操作,所有在会话期间的操作形成了一个事务范围。所有的Workspace对象组合在一起形成了一个Workspaces集合。10.3.3DAO对象Workspace对象最常用的方法是CreateDatabase方法,用于建立新的数据库。还有OpenDatabase方法,作用是建立Database对象与物理数据库的映射,例如:DimDBasDatabaseSetDB=DBEngine.Workspaces(0).OpenDatabase("D:\student.mdb")4.Database对象当使用CreateDatabase创建了一个数据库或用OpenDatabase打开一个数据库都将生成了一个Database对象。10.3.3DAO对象
Database对象有5个子集合,分别是Recordsets、QueryDefs、TableDefs、Relation和Containers集合,这些集合分别包含Recordset对象、QueryDef对象、TableDef对象、Relation对象和Container对象,可以使用Database对象的一些方法来操纵数据库和创建这些对象。(1)Execute方法该方法可以执行一条SQL语句,SQL语句不仅可以操作数据库中的数据,还可以修改数据库的结构。10.3.3DAO对象(2)OpenRecordset方法该方法用于在数据库中执行一个查询,将查询的结果返回给一个Recordset对象。(3)CreateQuery方法该方法用于在数据库中创建一个QueryDef对象。(4)CreateRelation方法该方法用于定义两个TableDef或QueryDef之间的关系,并返回一个Relation对象。10.3.3DAO对象(5)CreatTableDef方法该方法用于在数据库中创建一个数据表,并返回一个TableDef对象。5.Recordset对象
Recordset对象是最经常使用的一个对象。Recordset对象可以由Data控件生成,生成后的对象名称为Recordset,也可以由Database对象OpenRecordset方法生成,生成的对象用户可以自定义名称。10.3.3DAO对象6.Field对象
Field对象是Jet引擎访问数据的对象模型中的最底层的对象,表示一个字段。Field对象可以设置字段的各种属性,例如:DimrstasRecordset'定义Recordset对象DimfldAsField'定义Field对象Setfld=rst.Fields(0)Label1=fld.Name'显示字段名Text1=fld.Value'显示字段值10.3.4使用DAO对象访问数据库VB不能直接使用DAO访问数据库,需要添加引用,然后在使用DAO对象连接物理数据库并产生记录集,使用记录集的属性和方法来操作数据库。使用DAO对象访问数据库具体的步骤如下:(1)添加DAO引用,首先建立一个标准EXE工程,选择“工程”菜单中的“引用”命令将弹出“引用”对话框,在“可用的引用”框中选择“MicrosoftDAO3.51ObjectLibrary”,然后单击确定按钮。返回10.3.4使用DAO对象访问数据库(2)在使用DAO对象之前先在窗体中添加数据绑定控件,用于显示数据集中各字段的数据,设置各控件的相关属性。(3)定义Database对象,使用Workspace对象的OpenDatabase方法建立该Database对象与物理数据库的映射。(4)定义Recordset对象,使用Database对象的OpenRecordset方法创建数据集。10.3.4使用DAO对象访问数据库例如:DimDBasDatabase'定义Database对象SetDB=DBEngine.Workspaces(0).OpenDatabase("D:\student.mdb")DimrstAsRecordset'定义Recordset对象Setrst=DB.OpenRecordset("SELECT*FROM学生学籍表;")(5)编写代码,将记录集的数据显示在数据绑定控件中,使用数据集的属性和方法操作数据库。10.3.5DAO对象编程实例【例10-5】使用DAO对象访问student.mdb的学生学籍表,实现简单的学生学籍管理功能。返回10.4使用ADO方法访问数据库ADO是一种提供访问各种数据类型的连接机制,可以使应用程序通过任何OLEDB提供者来访问数据库的数据,通过ADO可以访问SQLServer、Oracle、Access等关系数据库,还可以访问Excel表格、文本文件等其他数据形式。在VisualBasic6.0中,提供了ADOData控件,它是基于ADO技术实现的数据控件,支持OLEDB访问模型。通过ADOData控件可以快速的建立数据提供者和数据绑定控件之间的连接,以较少的代码创建数据库应用程序。返回10.4使用ADO方法访问数据库10.4.1ADOData控件10.4.2ADOData的数据绑定控件10.4.3ADO对象10.4.4使用ADO对象访问数据库10.4.5ADO对象编程实例返回10.4.1ADOData控件1.添加ADOData控件到工具箱
ADOData控件是ActiveX控件,需要将其添加到工具箱中,添加步骤如下:(1)在VB6.0中,选择“工程”菜单的“部件”命令,弹出“部件”对话框。(2)在对话框的“控件”选项卡中选择“MicrosoftADODataControl6.0(OLEDB)”。(3)单击“确定”按钮,将ADOData控件添加到工具箱中。返回10.4.1ADOData控件
2.ADOData控件的属性将ADOData控件连接到数据源需要设置ADOData控件的几个基本属性。(1)ConnectionString属性该属性用于建立与数据源的连接,该属性有两种设置方法:一种是右击ADOData控件,在弹出的菜单中选择“ADODC属性”命令,另一种是在属性窗口单击ConnectionString属性。两种方法都将打开“属性页”对话框。10.4.1ADOData控件
在“属性页”对话框的通用选项卡中,可以使用三种方式来连接数据源:①通过一个数据连接文件完成数据库连接;②通过数据源名称(DSN)来连接数据库;③通过生成连接字符串来连接数据库。(2)CommandType属性该属性用于设置RecordSource(记录源)的类型,取值范围如表10-4所示。该属性通常在“属性页”对话框中的“记录源”选项卡中设置,也可以编写代码设置。10.4.1ADOData控件(3)RecordSource属性该属性用于设置ADOData控件访问的数据,由这些数据可以构成记录集对象RecordSet。该属性可以设置为数据表名、SQL语句或存储过程名(由CommandType属性设定)。该属性通常在“属性页”对话框中的“记录源”选项卡中设置,也可以编写代码设置。【例10-6】添加一个ADOData控件,将数据库student.mdb的学生学籍表设置为数据源。10.4.1ADOData控件3.ADOData控件的方法和事件
ADOData控件常用的方法与Data控件类似,包括Refresh、UpdateControls等,可以参考Data控件的方法。
ADOData控件除了与其他控件一样有MouseDown、MouseUp等事件,还具有一些与数据库变化有关的事件。(1)WillMove事件和MoveComplete事件
WillMove事件在移动当前记录之前触发,MoveComplete事件在移动记录之后触发。10.4.1ADOData控件(2)WillChangeField事件和FieldChangeComplete事件
WillChangeField事件在对RecordSet对象的字段值修改前触发,FieldChangeComplete事件是在对字段值修改后触发。(3)WillChangeRecord事件和RecordChangeComplete事件
WillChangeRecord事件在更改RecordSet对象的记录前触发,RecordChangeComplete事件是在对记录更改后触发。(4)WillChangeRecordset事件和RecordsetChangeComplete事件
WillChangeRecordset事件在更改RecordSet对象前触发,RecordsetChangeComplete事件是在对Recordset对象更改后触发。10.4.2ADOData的数据绑定控件
ADOData控件常用的数据绑定控件包括Label、TextBox、CheckBox、ListBox和ComboBox等标准控件,这些数据绑定控件的用法在Data控件中已经介绍过。除此之外,还有一些ActiveX控件可以作为ADOData控件常用的数据绑定控件:DataList、DataCombo、DataGrid和MSHFlexGrid等控件,选择“工程”菜单的“部件”命令,在“部件”对话框的“控件”选项卡中选择不同的项可以将这几个控件添加到工具箱中。返回10.4.2ADOData的数据绑定控件1.DataList控件和DataCombo控件
DataList和DataCombo控件的用法基本一样,不同之处在于DataCombo控件提供了文本框可以编辑数据。下面介绍一下两个控件的主要属性。(1)DataSource属性该属性是所有数据绑定控件都有的属性,用于设置需要绑定的数据控件,该数据控件对应一个数据集对象。10.4.2ADOData的数据绑定控件(2)DataField属性该属性用于将DataSource属性指定的记录集对象的一个字段绑定到DataList或DataCombo控件中。(3)RowSource属性该属性设置用于填充DataList或DataCombo控件的数据控件,该数据控件对应一个数据集对象。(4)ListField属性由RowSource属性指定了数据控件之后,还需要设置ListField属性,用于指定填充DataList或DataCombo控件的字段。10.4.2ADOData的数据绑定控件(5)BoundColumn属性该属性设置由RowSource属性指定的记录集对象的一个字段,该字段用于提供更新DataField属性指定字段的数据,所以该属性一般与DataField属性设置为同一字段。(6)BoundText属性该属性表示BoundColumn属性指定的字段的值。
DataList和DataCombo控件在形式上与ListBox和ComboBox控件相似,但没有AddItem、RemoveItem和Cls方法。10.4.2ADOData的数据绑定控件2.DataGrid控件
DataGrid控件是一种表格形式的数据绑定控件,以一系列的行和列来显示记录集Recordset对象的字段和记录。在设计时,可以将DataGrid控件的DataSource属性设置为ADO数据控件,由数据控件指定的记录集将自动填充DataGrid控件,DataGrid控件的列标头也将显示记录集的各字段名。在程序运行时,还可以编辑DataGrid控件中单元格的内容来编辑记录集的数据。10.4.2ADOData的数据绑定控件DataGrid控件的常用属性如下:(1)DataSource属性该属性是设置DataGrid控件的数据来源。(2)AllowAddNew、AllowDelete、AllowUpdate属性这三个属性分别用于设置是否允许在DataGrid控件中对记录集对象添加新记录、删除记录和更新记录。【例10-7】使用一个DataGrid控件显示学生的成绩,用一个DataCombo控件显示课程名,当用户在DataCombo控件选择了某门课程后DataGrid控件只显示该门课程的学生成绩。10.4.2ADOData的数据绑定控件3.MSHFlexGrid控件
早期的MSFlexGrid控件不支持ADO编程模型,VB提供了MSHFlexGrid(MicrosoftHierarchicalFlexGrid)控件支持ADO,MSHFlexGrid控件与DataGrid控件类似,可以以网格形式显示数据,不过MSHFlexGrid控件显示的数据是只读的,不允许用户对绑定的数据进行编辑,能够保证原始数据的安全。
MSHFlexGrid控件提供了高度灵活的网格排序、合并和格式设置功能,控件中的单元格可以包含文本和图片。10.4.2ADOData的数据绑定控件
下面介绍一下MSHFlexGrid控件的常用属性。(1)DataSource属性
MSHFlexGrid控件的数据来源需要设置DataSource属性,可以将DataSource属性设置为ADOData控件,MSHFlexGrid控件将显示ADOData控件产生的记录集数据。例如:
SetMSHFlexGrid1.DataSource=Adodc1(2)Row和Col属性
Row和Col属性表示MSHFlexGrid控件的当前单元格的行和列。10.4.2ADOData的数据绑定控件(3)Rows和Cols属性
Rows和Cols属性表示MSHFlexGrid控件的行数和列数。(4)ColWidth和RowHeight属性
ColWidth表示某列的列宽,RowHeight属性表示某行的行高。(5)CellTop和CellLeft属性
CellTop属性表示当前单元格与MSHFlexGrid控件的上边距,CellLeft属性表示当前单元格与MSHFlexGrid控件的左边距。10.4.2ADOData的数据绑定控件(6)CellWidth和CellHeight属性
CellWidth和CellHeight属性表示MSHFlexGrid控件当前单元格的宽度和高度。(7)TextMatrix属性
MSHFlexGrid控件使用TextMatrix(i,j)来访问第i行第j列的单元格内容。(8)Sort属性
Sort属性用于设置MSHFlexGrid控件的排序类型,Sort属性取值范围如表10-5所示。10.4.2ADOData的数据绑定控件
MSHFlexGrid控件常用的方法有AddItem、Clear、RemoveItem等方法。(1)AddItem方法
向MSHFlexGrid控件的网格中添加一行。(2)Clear方法
清除MSHFlexGrid控件的网格中的内容,但并不影响网格的结构。(3)RemoveItem方法
删除MSHFlexGrid控件的网格中的一行。10.4.2ADOData的数据绑定控件
MSHFlexGrid控件的常用事件除了Click、KeyPress、LostFocus等事件之外,还有LeaveCell、EnterCell和RowColChange等事件。(1)LeaveCell事件
当MSHFlexGrid控件离开某个单元格,另一个单元格成为活动单元格前触发LeaveCell事件。(2)EnterCell事件
当MSHFlexGrid控件的某个单元格成为活动单元格时触发EnterCell事件。10.4.2ADOData的数据绑定控件(3)RowColChange事件当MSHFlexGrid控件的某个单元格成为活动单元格后触发RowColChange事件。【例10-8】将ADOData控件的数据绑定到MSHFlexGrid控件中,调整MSHFlexGrid控件每列的列宽为最适合的宽度,在每一行记录前添加序号。【例10-9】在例10-8的基础上,实现MSHFlexGrid控件单元格的编辑功能。10.4.2ADOData的数据绑定控件(3)RowColChange事件当MSHFlexGrid控件的某个单元格成为活动单元格后触发RowColChange事件。【例10-8】将ADOData控件的数据绑定到MSHFlexGrid控件中,调整MSHFlexGrid控件每列的列宽为最适合的宽度,在每一行记录前添加序号。【例10-9】在例10-8的基础上,实现MSHFlexGrid控件单元格的编辑功能。【例10-10】在例10-9的基础上,实现编辑单元格数据后更新到记录集中。10.4.3ADO对象
这里主要介绍Connection对象和Command对象。1.Connection对象
Connection对象的主要功能是与数据源连接、执行查询语句和建立事物处理,Connection对象的各种操作是使用属性和方法来实现的。(1)ConnectionString属性该属性用于设置Connection对象的连接数据源。例如:"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\student.mdb"返回10.4.3ADO对象(2)Open方法设置了ConnectionString属性之后,使用Connection对象的Open方法来建立连接。(3)Execute方法
Connection对象使用Execute方法执行查询命令,返回记录集对象引用。10.4.3ADO对象(4)BeginTrans、CommitTrans和RollbackTrans方法
Connection对象使用这三个方法进行事物处理。在数据更新之前,用BeginTrans方法开始事务处理,当数据更新以后,使用CommitTrans方法提交事务或者RollbackTrans方法回滚事务。(5)Close方法
Connection对象使用close方法关闭连接,但是Connection对象并没有从内存中删除,如果需要将Connection对象从内存删除,可以将其设置为Nothing。10.4.3ADO对象2.Command对象
Command对象主要用于执行数据库操作命令,使用Command对象的属性和方法可以完成许多与查询有关的操作。(1)CommandType属性
Command对象执行的命令类型由CommandType属性决定,该属性有四种不同的值分别是adCmdText、adCmdTable、adCmdStoreProc和adCmdUnknow,分别对应SQL语句、表、存储过程和未知类型。10.4.3ADO对象(2)CommandText属性
CommandText属性表示Command对象要执行的命令文本,由CommandType属性决定执行的是SQL语句还是一个表或一个存储过程。(3)ActiveConnection属性
该属性用于Command对象与打开的连接相关联。(4)Execute方法
Execute方法用于执行CommandText属性设置的查询命令,返回记录集对象。10.4.4使用ADO对象访问数据库
VB中不能直接使用ADO对象,需要先添加ADO对象的引用,添加的方法与添加DAO类似,单击“工程”菜单中的“引用”命令将弹出“引用”对话框,在“可用的引用”框中选择“MicrosoftActiveXDataObjects2.5Library”,然后单击确定按钮。使用ADO对象有两种方法建立连接,一种是使用Connection对象的Open方法,这种方法在上一小节的Connection对象已经介绍。返回10.4.4使用ADO对象访问数据库
另一种是使用Recordset对象的Open方法建立连接,Recordset对象的Open方法的格式和参数介绍如下:Recordset对象.OpenSource,ActiveConnection,CursorType,LockType,Options(1)SourceSource参数可以是Command对象、SQL语句、数据表或存储过程。(2)ActiveConnectionActiveConnection参数用来连接Connection对象,可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。10.4.4使用ADO对象访问数据库(3)CursorTypeCursorType参数表示采用哪种游标类型,具体取值如表10-6所示。(4)LockTypeLockType参数表示要采用的Lock类型,具体取值如表10-7所示。(5)Options
如果Source参数取值不是Command对象,则由Options参数确定其取值类型。10.4.5ADO对象编程实例【例10-11】使用ADO对象访问student.mdb数据库,实现简单的学生信息管理功能,可以浏览学生信息、维护学生信息和查询学生信息。返回10.5报表
数据库应用程序可以制作报表来实现打印功能,VB6.0提供了报表设计器来制作报表。使用报表设计器制作报表需要数据环境设计器提供数据源。1.数据环境设计器在VB6.0中添加数据环境有以下两种方法:(1)选择“工程”菜单中的“添加DataEnvironment”命令。(2)在工程窗口右击后弹出快捷菜单,选择“添加”中的“DataEnvironment”命令。返回10.5报表
使用数据环境设计器创建数据源需要设置Connection对象和Command对象。(1)设置Connection对象在数据环境设计窗口右击Connection1,在弹出的快捷菜单选择“属性”命令将打开“数据链接属性”对话框,在“数据链接属性”对话框的“提供程序”选项卡选择“MicrosoftJet4.0OLEDBProvider”,单击“下一步”按钮,进入到“连接”选项卡,在“连接”选项卡的“选择或输入数据库名称”中设置需要连接的数据库。10.5报表(2)创建Command对象右击Connection1,在弹出的快捷菜单选择“添加命令”将添加Command1。右击Command1,在弹出的快捷菜单选择“属性”命令将弹出“Command1属性”窗口。在“通用”选项卡中的选择数据库对象,设置一个表或存储过程。也可以选择SQL语句,输入一条合法的SQL语句。10.5报表2.报表设计器
添加报表设计器与添加数据环境的方法类似。在“工程”菜单中选择“添加DataReport”命令,可以在工程窗口的设计器中添加“DataReport1”。在设计报表之前,先添加报表的数据源,设置DataReport1的DataSource和DataMember属性即可。例如将DataSource属性设置为DataEnvironment1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务政策的实施与效果试题及答案
- 财务知识与逻辑推理结合的试题及答案
- 2025工程资料承包合同范本
- 优化代码质量的Python试题及答案
- 财务透明度的逻辑重要性试题及答案
- 2025年Delphi多样学习试题及答案
- 注重能力提升的现代汉语学习方法试题及答案
- 2025年MySQL考试重点考查试题及答案
- 财务决策中的逻辑影音试题及答案
- 2025年二级MySQL考试回顾与试题及答案
- 人教版八年级下英语单词默写表格(整理打印)
- FMEA第五版(实例2)
- 量表开发与检验(课堂PPT)
- 艾默生PEX系列精密空调技术手册
- 炼铁厂鱼雷罐、铁水罐穿包紧急预案
- 10kV备自投调试报告
- 《电路分析基础》试题及答案
- 电气设备调试定额
- 储能技术-储能材料-新能源材料-锂电池储能(PPT100页)
- 商品销售明细单(样本)
- 食堂管理处罚通知单
评论
0/150
提交评论