《章Access数据库基础》由会员分享,可在线阅读,更多相关《章Access数据库基础(183页珍藏版)》请在金锄头文库上搜索。
1、上一页上一页下一页下一页返回首页返回首页上一页上一页下一页下一页返回首页返回首页第第1章章 Access数据库基础数据库基础第第2章章 SQL Server基础基础第第3章章 Visual Basic 数据库访问概述数据库访问概述第第4章章 用户界面控件用户界面控件第第5章章 数据访问对象(数据访问对象(DAO) 第第6章章 开放式数据库连接与远程数据对象开放式数据库连接与远程数据对象第第7章章 Active X数据对象(数据对象(ADO)Visual Basic数据库应用电子教案第第8章章 报表报表上一页上一页下一页下一页返回首页返回首页第1章 Access数据库基础1.1 关系数据库的基本
2、概念 1.2 Access基础 1.3 建立Access数据库和表 1.4 数据库设计实例 返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页第2章 SQL Server基础2.1 Microsoft SQL Server 2000基础 2.2 Transact-SQL语言基础 2.3 SQL数据库 2.4 创建和使用表 2.6 高级查询技术 2.5 简单查询 返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页3.1 访问数据库 3.2 Data控件 第3章 VB数据库访问概述返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页4.1 固有控件 4.2 Active
3、X控件 4.3 通讯录应用程序实例 第4章 用户界面控件返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页5.1 数据访问对象 5.2 使用DAO操作数据 5.3 使用DAO控制数据库结构 5.4 DAO实例 第5章 数据访问对象返回总目录返回总目录上一页上一页下一页下一页返回首页返回首页6.1 ODBC的配置和使用 6.2 使用远程数据控件访问数据 6.3 使用远程数据对象 6.4 实例 返回总目录返回总目录第6章 开放式数据库连接与远程数据对象上一页上一页下一页下一页返回首页返回首页7.1 使用ADO ActiveX控件 7.2 ADO常用对象的使用 返回总目录返回总目录第7章
4、ActiveX数据对象上一页上一页下一页下一页返回首页返回首页8.1 用VB的Datareport设计器设计报表 8.2 使用Access建立报表 8.3 用VB输出报表 8.4 使用VB的Printer对象创建报表 返回总目录返回总目录第8章 报表上一页上一页下一页下一页返回首页返回首页1关系数据库系统关系数据库系统是指支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。2数据库的定义在关系数据库模型中,数据库为一些相互之间存在一定关联的表格的集合。一个表格是由若干的行(记录)来构成。字段是记录的一部分。数据表有以下特点:数据表的任意行和列可以以任何顺序排列
5、;数据表的名称必须唯一;数据表中不能有重复的记录,每条记录都是可以辨认的。1.1.1 关系数据库的定义上一页上一页下一页下一页返回首页返回首页1主关键字在关系的各种属性中,能够用来唯一标识记录的属性称为关键字。主关键字不允许为空或重复,并且要保证其唯性,以保证数据的的完整性。2外关键字在实现关系数据库时,必须能表示表与表之间的联系。因此,需要一个表中的一列与另一个表的主关键字相匹配,这样的列可以做为外关键字。这种完整性规则,称为引用完整性。1.1.2 主关键字和外关键字上一页上一页下一页下一页返回首页返回首页关系数据库的模型简明,便于用户理解;用户对数据库的操作使用了非过程化的表示,操作方便;
6、用户接口不涉及任何存储路径和存储方式,数据独立性高。此外,关系数据库有着网状数据库和层状数据库所没有的强大数学基础;关系数据库管理程序能够在同一时刻对多个表格进行操作,这种能力可以将数据分成更合乎逻辑的和易于管理的类别,关系数据库常常由许多通过“关系”联系起来的表格组成。1.1.3 关系数据库的特点上一页上一页下一页下一页返回首页返回首页1Visual Basic访问数据库的类型在VisualBasic中通过数据访问控件或数据访问对象(DAO)等可以访问的数据库有以下几种:JET数据库,即MicrosoftAccess数据库;ISAM数据库,例如:dBase,FoxPro数据库等;ODBC数据
7、库,凡是遵循ODBC标准的客户/服务器数据库。2外关键字VisualBasic访问数据库通常有下面三种途径:通过数据库控制控件DataControl访问;通过VB提供的数据库对象变量编程访问;通过ODBC接口访问ODBCAPI函数。返回本返回本章目录章目录1.1.4 Visual Basic访问数据库的类型与途径上一页上一页下一页下一页返回首页返回首页1Access的对象Access2000支持的对象包括表、查询、报表、窗体、宏、模块及网页。Access所提供的这些对象都存放在同一个数据库文件(.mdb文件)中,而不像其他数据库那样分别存放于不同的文件中。这样就方便了数据库文件的管理。2Acc
8、ess的主要功能定义数据创建表,利用表存储相应的信息;根据需要定义各表之间的关系;方式多样的数据处理能力;创建Web页,建立对Internet和Intranet的支持;开发应用程序。 1.2.1 Access的特点上一页上一页下一页下一页返回首页返回首页1Access主窗口 1.2.2 熟悉Access开发环境上一页上一页下一页下一页返回首页返回首页2数据库窗口 返回本返回本章目录章目录1.2.2 熟悉Access开发环境上一页上一页下一页下一页返回首页返回首页1. 设计数据库的基本步骤 对数据库进行总体的设计;规划该数据库中需要建立的表;确定表中所需的字段;明确有唯一值的字段;确定表之间的关
9、系;优化设计;输入数据并新建其他数据库对象;使用MicrosoftAccess的分析工具设计输出报表。 1.3.1 数据库的设计上一页上一页下一页下一页返回首页返回首页1打开数据库在使用数据库之前,必须打开数据库。启动Access后,弹出如下图所示“MicrosoftAccess”对话框,从中选择“打开已有数据库”选项,选择所要打开的数据库,单击“确定”按钮,即可打开此数据库。如果在“打开已有数据库”下面的选项框里没有所需要的数据库,单击“更多的文件”选项,进行操作。 1.3.2 数据库的创建与打开上一页上一页下一页下一页返回首页返回首页2创建Access数据库MicrosoftAccess提
10、供两种创建Access数据库的方法:使用“数据库向导”创建数据库,利用系统提供的模板来选择数据库类型来创建所需的表、窗体及报表。采用这种方法,一次操作即可为所选数据库类型创建必要的表、窗体及报表,这是创建数据库最简单最快速的方法。先创建一个空数据库,然后再添加表、窗体、报表及其他对象,这是最灵活的方法,但需要分别定义每一个数据库要素。无论哪一种方法,在数据库创建之后,都可以随时修改或扩展数据库。 1.3.2 数据库的创建与打开上一页上一页下一页下一页返回首页返回首页1表的设计过程表格设计的基本过程为:打开数据库;建立一个新表;输入每一个字段名、数据类型和说明;确定为每一个字段定义的属性;设置个
11、主关键字;为某些字段建立索引;保存设计。 1.3.3 创建表上一页上一页下一页下一页返回首页返回首页2创建表的方法创建表有很多方法,基本的主要有两种方法:使用表向导创建表在“设计”视图中创建表 1.3.3 创建表上一页上一页下一页下一页返回首页返回首页修改字段删除字段增加字段修改字段的属性修改表与表之间的关系 1.3.4 修改表一个数据库系统被设计出来以后,当出现新的需求时,往往要对表的结构进行修改。除此之外,还包含设置数据表格式、隐藏和冻结列、多级显示记录和使用查阅向导等。对表进行修改的操作包括:上一页上一页下一页下一页返回首页返回首页数据库中的表一般来讲并不是相互独立、互不相关的,表与表之
12、间存在着一定的联系,也正因为这些联系才体现出了数据库的优越性。单击”数据库“窗口工具栏上的”关系“按钮,出现如下图所示的关系窗口。 关系窗口里列出了所有已经存在的表与表之间的联系,这种联系通过表之间的连线体现出来。1.3.5 修改表间的关系上一页上一页下一页下一页返回首页返回首页通过上面的操作,我们创建了一个数据库,但数据库中并没有数据,下面我们为数据库输入数据,使之成为一个完整的数据库。下图为一数据输入窗口。 返回本章目录返回本章目录1.3.6 表中数据输入上一页上一页下一页下一页返回首页返回首页本实例首先创建一个名为“学生信息”的数据库,然后在该数据库中创建三张数据表:“学生成绩”、“姓名
13、”和“学生联系表”,并输入一部分数据记录,最后建立了表间关系。设计步骤如下: 启动Access 2000并创建空数据库,命名为“学生成绩.mdb”。为数据库创建表,为了输入部分数据,我们使用设计器来创建一个新表。定义字段,如下页所示。数据库设计实例上一页上一页下一页下一页返回首页返回首页 数据库设计实例上一页上一页下一页下一页返回首页返回首页保存数据表,命名为“学生成绩”;根据需要定义主键;输入数据;双击数据库视图中的“学生成绩”表,在如下图所示的表视图中添加几条新的记录,依次输入学号、姓名等字段。 数据库设计实例上一页上一页下一页下一页返回首页返回首页依照步骤,再建立“姓名”表和“学生联系”
14、表,如下图所示,两张表均定义“学号”为主键。 数据库设计实例上一页上一页下一页下一页返回首页返回首页建立表间关系 返回本章目录返回本章目录数据库设计实例上一页上一页下一页下一页返回首页返回首页MicrosoftSQLServer2000是一个分布式的关系数据库管理系统,具有客户机/服务器体系结构,使用Transact-SQL语言在客户机和服务器之间传递客户机的请求和服务器的处理结果。MicrosoftSQLServer2000系统具有动态的数据存储机制。MicrosoftSQLServer2000系统具有强大的安全措施。MicrosoftSQLServer2000系统具有很强的数据互操作性。M
15、icrosoftSQLServer2000系统具有功能强大的网上功能,可以在Internet上发布数据库中的数据。MicrosoftSQLServer2000虽然采用了分布式的计算模式,但是它也支持单用户的计算模式。MicrosoftSQLServer2000系统具有内置的数据复制功能。2.1.1 Microsoft SQL Server 2000的特点上一页上一页下一页下一页返回首页返回首页SQLServer企业管理器是一个集成化的数据库操作环境,是基于一种新的被称为微软管理控制台的公共服务器管理环境,是SQLServer中最重要的一个管理工具。下图是一个典型的SQLServer企业管理器窗
16、口。2.1.2 SQL Server 企业管理器 (EnterpriseManager) 上一页上一页下一页下一页返回首页返回首页SQLQueryAnalyzer既是一个图形化的执行Transact-SQL查询语句的强大工具,又是一个方便易用的工具。见下图是一个典型的SQLQueryAnalyzer窗口。返回本章目录返回本章目录2.1.3 SQL 查询分析器(Query Analyzer)上一页上一页下一页下一页返回首页返回首页SQL语言是结构化查询语言(StructureQueryLanguage)的简称,是当前最流行的数据库语言,是访问关系数据库的标准语言。Microsoft 的SQL S
17、erver使用的SQL语言叫Transact-SQL(事务SQL,简称T-SQL)。一体化的特点,集数据查询、数据定义、数据操纵、数据控制功能为一体;高度非过程化语言,只需要提出“干什么”,而不需指出“如何干”,语句的操作过程由系统自动完成;语言简洁,类似于人的思维习惯,容易理解和掌握;可以直接以命令方式交互使用,也可以嵌入到程序设 计语言中使用。Transact-SQL语言有以下几个主要特点:2.2.1 SQL 概述上一页上一页下一页下一页返回首页返回首页Transact-SQL语言按其功能,可分为四大部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。数据定义(DDL):实现定义
18、、删除和修改数据库对象的功能(CREATE、DROP、ALTER)。数据查询(QL):实现查询数据的功能(SELECT)。数据操纵(DML)实现对数据库数据的增加、删除和修改的功能(INSERT、UPDATE、DELETE)。数据控制(DCL):实现控制用户对数据库的操作权限的功能(GRANT、REVOKE、DENY)。2.2.1 SQL 概述上一页上一页下一页下一页返回首页返回首页BigintIntSmallintTinyintBitNumeric(p,s)Decimal(p,s)FloatReal1数值型2字符数据类型字符型数据是由汉字、字母、数字和各种符号组成的,在SQLServer20
19、00中,默认情况下,字符数据是用单引号括起来的。普通编码:Char(n)Varchar(n)TextUnicode编码:Nchar(n)Nvarchar(n)Ntext二进制编码:Binary(n)Varbinary(n)Image2.2.2 Transact-SQL 数据类型 数值型有以下几类:上一页上一页下一页下一页返回首页返回首页SQLServer2000提供了两种用存储日期和时间的数据类型:datetime和smalldatetime。当存储此种类型数据时,默认的格式是MMDDYYYYhh:mm:ssAM/PM,当插入数据或在其它地方使用该类型时,需用单引号把它括起来。3日期时间类型输
20、入日期数据时,可采用如下几种输入格式:Apr222003/*英文数字格式*/2003-04-22/*数字加分隔符格式*/20030422/*纯数字格式*/输入时间时,可采用12小时格式或24小时格式:2003-04-222:25:35PM/*12小时格式*/2003-04-2214:25:35/*24小时格式*/2.2.2 Transact-SQL 数据类型上一页上一页下一页下一页返回首页返回首页货币数据表示正的或负的货币值,在SQLServer2000中使用Money和Smallmoney数据类型存储货币数据。4货币类型货币类型的数据实际上都是带有4位小数的decimal类型的数据。在Mon
21、ey或Smallmoney类型的字段中输入货币数据时必须在数值前加上一个货币符号,如$符号;输入负值时,应当在货币数据的后面加一个负号。2.2.2 Transact-SQL 数据类型上一页上一页下一页下一页返回首页返回首页一个语句批是一组Transact-SQL语句的集合,语句批的结束标记为:GO1语句批脚本是存储在文件中的一组Transact-SQL语句的集合。2脚本3注释注释是程序代码中不执行的文本字符串,Transact-SQL支持两种类型的注释:一种是单行注释“-”;另一种是块注释即“/*/”。SQLServer中的编程语言是Transact-SQL,Transact-SQL是一种非过
22、程化的高级语言,其基本成分是语句,由一个或多个语句构成一个批处理,由一个或多个批处理构成一个脚本,并保存到磁盘文件中。2.2.3 基本概念上一页上一页下一页下一页返回首页返回首页标准标识符可以包含1128个字符,包括字母、符号(_、#、$)及数字。标准标识符里不允许有空格,应遵循:第一个字符必须是字母(az或AZ),第一个字符后面可以是数字、字符或符号。但当第一个字符是符号时,则有如下特殊含义:1标准标识符以开头的标识符代表一个局部变量或参数以#号开头的标识符代表一个临时表或存储过程以#号开头的标识符代表一个全局临时对象2.2.4 SQL Server命名规则上一页上一页下一页下一页返回首页返
23、回首页2限定标识符如果不遵守一个或多个标准标识符格式规则时,必须使用限定标识符。一般地,在下列两种情况下使用限定标识符:当对象名中包含空格时当保留关键字被用作对象名或对象部分的名字时当限定标识符出现在Transact-SQL语句中时,必须用方括号()或双引号(“”)将限定标识符括起来。返回本章目录返回本章目录2.2.4 SQL Server命名规则上一页上一页下一页下一页返回首页返回首页数据库是数据和数据库对象的容器。数据库对象就是存储和管理数据的结构形式,这些数据库对象主要包括数据库图表、表、函数、视图、存储过程、触发器等。设计数据库的过程就是设计这些数据库对象的过程。1数据库对象事务就是一
24、个单元的工作,该单元的工作或者全部完成,或者全部不完成。SQLServer2000系统具有事务功能,可以保证数据库操作的一致性和完整性。2事务和事务日志3数据库文件和文件组数据库的物理表现是操作系统文件。SQLServer2000使用一组操作系统文件来创建一个数据库。数据库中的所有数据和对象,都存储在这些操作系统文件中。如前所述,这些操作系统的文件有两种形式:一种是数据文件,另一种是日志文件。文件组就是数据文件的集合。2.3.1 SQL Server 2000数据库特点上一页上一页下一页下一页返回首页返回首页1创建数据库在企业管理器中,打开左边的树状结构,在数据库文件夹或其下属任一数据库图标上
25、右击,从弹出的快捷菜单中选择新建数据选项,或直接单击工具栏上的“新数据库”图标,然而按步骤依次进行操作。CREATEDATABASE语句的语法形式如下:CREATEDATABASEdatabase_nameONPRIMARY,n,nLOGON,n示例示例2.3.22.3.3 创建和管理数据库可以在SQLServer企业管理器中创建数据库,也可使用Transact-SQL语句中的CREATEDATABASE命令来创建数据库。上一页上一页下一页下一页返回首页返回首页创建一个示例数据库。该数据库的主数据文件的逻辑名称是示例数据库_data,物理文件是示例数据库.mdf,大小是10MB,最大是30MB
26、,以20%的速度增加;该数据库的日志文件的逻辑名称是示例数据库_log,操作系统文件是示例数据库.ldf,大小是3MB,最大是10MB,以1MB的速度增加。CREATEDATABSE示例数据库ONPRIMARY(NAME=示例数据库_data,FILENAME=C:MicrosoftSQLServerdata示例数据库.mdf,SIZE=10MB,MAXSIZE=30MB,FILEGROWTH=20%)LOGON(NAME=示例数据库_log,FILENAME=C:MicrosoftSQLServerdata示例数据库.ldf,SIZE=3MB,MAXSIZE=10MB,FILEGROWTH=
27、1MB)创建和管理数据库示例上一页上一页下一页下一页返回首页返回首页数据库创建以后,可以在企业管理器中利用数据库的属性设置,来更改创建时的某些设置和创建时无法设置的属性。2修改数据库也可使用ALTERDATABSE语句来修改数据库。语法如下:ALTERDATABASEdatabasename|ADDLOGFILE,n|REMOVEFILElogical_file_nameWITHDELETE|ADDFILEGROUPfilegroup_name|REMOVEFILEGROUPfilegroup_name|MODIFYFILE|MODIFYNAME=new_dbname示例示例2.3.22.3.
28、3 创建和管理数据库上一页上一页下一页下一页返回首页返回首页为了扩大示例数据库的数据文件,可以增加一个次要数据文件示例数据库_data2,其大小为10MB,最大是20MB,以20%的速度增长。ALTERDATABASE示例数据库ADDFILE(NAME=示例数据库_data2,FILENAME=C:MicrosoftSQLServerdata示例数据库2.mdf,SIZE=10MB,MAXSIZE=20MB,FILEGROWTH=20%)创建和管理数据库示例上一页上一页下一页下一页返回首页返回首页对于那些不再需要的数据库,可以删除它以释放在磁盘上占用的空间。在企业管理器中,右击所要删除的数据库
29、,从弹出的快捷菜单中选择“删除”选项或直接按下键盘上的Delete按钮即可删除数据库,也可以选择数据库文件夹或图标后单出工具栏中的“删除”图标来删除数据库。3删除数据库也可以利用DROPDATABASE语句来删除数据库。语法如下:DROPDATABASEdatabase_name,n例:删除已建立的示例数据库DROPDATABASE示例数据库返回本章目录返回本章目录2.3.22.3.3 创建和管理数据库上一页上一页下一页下一页返回首页返回首页表是包含数据库中所有数据的数据库对象。既可以使用CREATETABLE语句创建表,也可以通过企业管理器创建表。使用CREATETABLE语句的语法如下:C
30、REATETABLEdatabase_name.owner.|owner.table_name(|column_nameAScomputed_column_expression|,n)示例示例在企业管理器中,展开指定的服务器和数据库,打开想要创建新表的数据库,右击表对象,并从弹出的快捷菜单中选择“新建表”选项,然后按步骤操作即可。2.4.1 创建表上一页上一页下一页下一页返回首页返回首页在示例数据库中创建学生表,该表包含了学生的有关信息:学号、姓名、性别、班级、年龄。USE示例数据库CREATETABLE学生表(学号intNOTNULL,姓名varchar(50)NULL,性别char(1)N
31、ULL,班级char(10)NULL,年龄intNULL)ONPRIMARY创建表示例上一页上一页下一页下一页返回首页返回首页ALTERTABLEtable_nameALTERCOLUMNcolumn_namenew_data_type(precision,scale)|ADD,n|DROPCOLUMNcolumn,n1用ALTER TABLE增加、删除、修改字段例:在学生表中,增加一个字段“出生年月”,该字段的数据类型为datetime,允许为空,没有默认值。 ALTER TABLE 学生表 ADD 出生年月 datetime null2在企业管理器中增加、删除、修改字段在企业管理器中,打开
32、指定的服务器中要修改的表的数据库,用右键单击进行修改的表,从弹出的快捷菜单中选择“设计表”选项,然后按步骤操作即可。2.4.2 修改、删除表结构上一页上一页下一页下一页返回首页返回首页删除表就是将指定的表中的数据和表的结构从数据库中永久性地去除。表删除之后,就不能再恢复该表的定义。3删除表的结构删除表也可以使用DROPTABLE语句,该语句的语法形式如下:DROPTABLEtable_name可以使用企业管理器删除表,在该工具中,打开指定表所在的数据,右击该表,从弹出的菜单中选择“删除”项即可。当然,系统表不能被删除。如:DROPTABLE学生表2.4.2 修改、删除表结构上一页上一页下一页下
33、一页返回首页返回首页表创建之后,只是一个空表。因此,向表中插入数据是在表结构创建之后,首先需要执行的操作。在表中插入数据,使用INSERT语句。该语句的语法形式如下:1插入数据例:要求往学生表中插入一行数据:学号为999999,姓名为张小三,性别为男,其它情况未知。可用以下三种方式完成:INSERTINTOtable_name(column_list)VALUES(DEFAULT|NULL|expression,n)|DEFAULTVALUESINSERTINTO学生表(学号,姓名,性别)VALUES(999999,张小三,M)INSERTINTO学生表VALUES(999999,张小三,M,
34、NULL,NULL)INSERTINTO学生表VALUES(999999,张小三,M,DEFAULT,DEFAULT)注意:INSERT语句每一次只能插入一行数据,在向表中插入数据时要注意,字符数据和日期数据要使用单引号引起来。2.4.3 操纵数据上一页上一页下一页下一页返回首页返回首页可以使用UPDATE语句修改表中已经存在的数据。UPDATE语句既可以一次修改一行数据,也可以一次修改多行数据。其语法形式如下:2修改数据例:将学生表中学生的年龄都提高1岁UPDATEtable_nameSETcolumn_name=expression|DEFAULT|NULL|variable=expres
35、sion|variable=column=expression,nFROM,nWHEREUPDATE学生表SET年龄=年龄+12.4.3 操纵数据上一页上一页下一页下一页返回首页返回首页删除数据可以使用DELETE语句。DELETE语句可以一次从表中删除一行或多行数据。其语法形式如下:3删除数据例:删除学生表中班级为GZ02房产的全部学生信息。DELETEFROMtable_nameFROM,nWHEREDELETEFROM学生表WHERE班级=GZ02房产注意:DELETE语句只是删除表中的数据,表本身依然存在于数据库中。如果需要删除表本身,则应使用前面已经讲过的DROPTABLE语句。返回
36、本章目录返回本章目录2.4.3 操纵数据上一页上一页下一页下一页返回首页返回首页数据检索就是把数据库中存储的数据根据用户的需求提取出来的过程,并且使用SELECT语句进行数据检索。SELECT语句完整的语法形式非常复杂,这里给出如下的SELECT简洁语法形式:SELECTALL|DISTINCTselect_listINTOnew_table_nameFROMtable_name|view_name,table_name|view_name,WHEREclauseGROUPBYclauseHAVINGclauseORDERBYclauseCOMPUTEclauseFORBROWSE2.5.1
37、SQL查询的基本结构上一页上一页下一页下一页返回首页返回首页在上述结构中:SELECT子句用于指定输出的字段;FROM子句用于指定数据的来源;WHERE子句用于指定数据的选择条件;GROUPBY子句用于对检索到的记录进行分组;HAVING子句用于指定组的选择条件;ORDERBY子句用于对查询的结果进行排序在这些子句中,SELECT子句和FROM子句是必须的,其它子句都是可选的。以下所有的举例都是以示例数据库为基础的,示例数据库中建立了三张表:学生表、选课表、课程表,具体结构见教材图2.14、图2.15、图2.16所示。2.5.1 SQL查询的基本结构上一页上一页下一页下一页返回首页返回首页SE
38、LECTALL|DISTINCTselect_listFROMtable_name|view_name其中:select_list指定了要返回的列;FROM子句指定了返回的行和列所属的表或视图。 SELECT子句的部分语法形式:1选择列最简单的查询:检索学生表中的全部信息。SELECT*FROM学生表*表示检索全部列。在这个结果中,显示的信息与数据在表中存储的顺序完全一样。可在SELECT后面指出要检索的列名:检索每一个学生的姓名和班级。SELECT姓名,班级FROM学生表SELECT班级,姓名FROM学生表列顺序的改变,只是影响数据结果的显示,对于表中的数据的存储顺序无任何影响。2.5.2
39、SELECT 子句上一页上一页下一页下一页返回首页返回首页在默认情况下,数据检索结果集中所显示出来的列标题就是在创建表时所使用的列名。但是,显示的列标题也是可以改变的。改变列标题有两种方法:使用“=”;使用AS关键字。检索学生表中的学号、姓名和班级信息,要求班级以“所在班级”列标题输出。SELECT学号,姓名,所在班级=班级FROM学生表SELECT学号,姓名,班级AS所在班级FROM学生表2改变列标题上面两个语句查询显示结果完全相同2.5.2 SELECT 子句上一页上一页下一页下一页返回首页返回首页SELECT子句中可以包含算术表达式,允许+、-、*、/,当然也可以是常量。要求输出成绩提高
40、20%后的成绩:SELECT学号,课程号,成绩,成绩*1.2AS提高后的成绩FROM选课表SELECTDISTINCT学号FROM选课表3带表达式的SELECT子句4ALL与DISTINCTSQL允许关系和查询结果中出现重复行,要强制消除重复,可在SELECT后使用关键字DISTINCT,而指定ALL则不消除重复。在MSSQL中,默认为ALL。在选课表中,一个学生可以同时选多门课,如果要求检索出已经选过课的学生学号:2.5.2 SELECT 子句上一页上一页下一页下一页返回首页返回首页在SELECT语句中,WHERE子句指定要检索的数据行,将WHERE关键字后面的搜索条件为真的记录全部检索出来
41、。要求检索出选课表中所有选修了1号课程的同学的学号和成绩:SELECT学号,成绩FROM选课表WHERE课程号=1SELECT学号,成绩FROM选课表WHERE课程号=1AND成绩=801比较运算符2逻辑运算符要求检索出选修了1号课程并且成绩在80分以上的同学的学号和成绩2.5.3 用WHERE 子句过滤记录上一页上一页下一页下一页返回首页返回首页要求检索出学生表中年龄在20至23之间的所有男同学:SELECT*FROM学生表WHERE年龄BETWEEN20AND23AND性别=MSELECT*FROM学生表WHERE班级IN(GZ02计5,GZ02计5,GZ02计5)3BETWEENAND4
42、IN(NOT IN)IN或者NOTIN关键字允许指定要选择的取值表,意思是包含在由IN指定的列表之中或不包含在由NOTIN指定的列表中。BETWEENAND可以指定搜索范围,表示在之间。要求检索出学生表中GZ02计5、GZ02计6、GZ02计7三个班级的同学信息:2.5.3 用WHERE 子句过滤记录上一页上一页下一页下一页返回首页返回首页SELECT*FROM学生表WHERE姓名LIKE陈%SELECT*FROM学生表WHERE姓名LIKE陈_5字符串模糊匹配LIKE关键字用于检索与特定字符串相匹配的记录行。在LIKE关键字中,可以使用4种匹配符:%、_、。带有匹配符的字符串必须使用引号引起
43、来。要求检索出学生表中所有姓“陈”的同学信息:要求检索出学生表中所有不姓“陈”的同学信息:在使用LIKE进行数据检索时,应注意,一个英文字母和一个汉字都是一个字符。2.5.3 用WHERE 子句过滤记录上一页上一页下一页下一页返回首页返回首页SELECT学号,成绩FROM选课表WHERE课程号=1ORDERBY成绩DESCSELECT学号,成绩FROM选课表WHERE课程号=1ORDERBY成绩,学号DESC排序就是指用ORDERBY子句排列查询结果的顺序;OrderBy子句使用升序(ASC)或降序(DESC)指定一组列;对于在结果表中无列名称的列,可以使用一个相对列号来代替列名,系统默认的排
44、列顺序是升序。要求检索出了选课表中所有选修课程号为1的同学的学号和成绩,并按成绩从高到低的顺序排列:接上例,如果在成绩相同的情况下,要求再按学号降序排列:2.5.4 用ORDER BY子句对查询结果排序上一页上一页下一页下一页返回首页返回首页1聚合函数聚合函数可以返回整个或者几个列或者一个列的汇总数据,它常用来计算SELECT语句查询的统计值。聚合函数经常与SELECT语句的GROUPBY子句一同使用。常用的函数及其功能如下:AVG返回数据表达式的平均值COUNT返回在某个表达式中数据值的数量COUNT(*)返回所选择行的数量MAX返回表达式中的最大值MIN返回表达式中的最小值SUM返回表达式
45、中所有值的和2.5.5 用GROUP BY 子句对查询结果进行分组上一页上一页下一页下一页返回首页返回首页COUNT(*)、COUNT(列名)、COUNT(DISTINC(列名) 三种用法的区别要求查询出选课表中1号课程的最高分、最低分及平均分:SELECTMAX(成绩)AS最高分,MIN(成绩)AS最低分,AVG(成绩)AS平均分,FROM选课表WHERE课程号=1COUNT(*)返回的是所选择行的数量,包括空值在内的所有行COUNT(列名)统计出所指定列的数量,不包括NULL在内的行COUNT(DISTINCT列名)则统计出消除重复后的所指定列的数量2.5.5 用GROUP BY 子句对查
46、询结果进行分组上一页上一页下一页下一页返回首页返回首页2使用GROUP BY子句聚合函数本身只能产生一个单个的汇总数据,使用GROUPBY子句之后,就可以生成分组的汇总数据。要求在学生表中,按班级进行汇总人数和平均年龄:SELECT班级,COUNT(*)AS班级人数,AVG(年龄)AS平均年龄FROM学生表GROUPBY班级ORDERBY班级2.5.5 用GROUP BY 子句对查询结果进行分组上一页上一页下一页下一页返回首页返回首页联合使用GROUPBY子句与HAVING子句,将在数据分组的基础上,进一步对数据进行汇总。可以用子句HAVING为结果集中的组设置条件。要求检索出在选课表里同时选
47、修了4门课程的同学的学号:SELECT学号,COUNT(课程号)AS课程门数FROM选课表GROUPBY学号HAVINGCOUNT(课程号)=4ORDERBY学号返回本章目录返回本章目录2.5.6 用HAVING 子句筛选结果集上一页上一页下一页下一页返回首页返回首页1ANSI连接在实际查询中,常需要同时从两个或者以上的表中检索数据。连接就是允许同时从两个表或者两个以上的表中检索数据,指定这些表中的某个或者某些列作为连接条件。在SQLServer中,可使用两种连接形式,一种是ANSI连接,这时连接条件出现在FROM子句中;另一种是SQLServer连接,这时连接条件出现在WHERE条件中。AN
48、SI连接的语法形式如下:SELECTtable_name.column_name,table_name.column_name,FROMtable_namejoin_typeJOINtable_nameONsearch_conditionsWHEREsearch_conditions其中其中 join_type 有有如下三种形式:如下三种形式: INNER(内连接);内连接); CROSS(交叉连接);交叉连接); OUTER(外连接)外连接)2.6.1 连接查询上一页上一页下一页下一页返回首页返回首页上例给出了自连接的示例。自连接可以理解为在某张表的多个“副本”之间进行的连接,注意此时一定要
49、用AS子句来区分到底是哪个“副本”,即用AS指定表的别名。要求检索出已经选修了4号课程的同学信息:要求检索出学号为2011109的学生的同班同学的信息:SELECT学生表.*FROM学生表JOIN选课表ON学生表学号=选课表学号WHERE选课表课程号=4SELECT学生表*FROM学生表JOIN学生表ASBON学生表班级=B班级WHEREB学号=20111092.6.1 连接查询上一页上一页下一页下一页返回首页返回首页2SQL Server连接SQLServer连接的语法形式如下:SELECTtable_name.column_name,table_name.column_name,FROMt
50、able_name,table_name,WHEREtable_name.column_namejoin_operatortable_name.column_nameFROM子句列出了连接时所使用到的全部表名,WHERE子句指定哪些行应该出现在结果集中,即用WHERE子句设定过滤条件。在WHERE子句中,在两个连接的列中使用连接运算符。2.6.1 连接查询上一页上一页下一页下一页返回首页返回首页上例给出了用SQLServer连接语法形式实现的自连接操作要求检索出至少已经有一门课程及格的同学的信息:要求检索出学号为2011109的学生的同班同学的信息:SELECTDISTINCT学生表.*FRO
51、M学生表,选课表WHERE学生表学号=选课表学号AND成绩=60SELECT学生表*FROM学生表ASA,学生表ASBWHEREA班级=B班级ANDB学号=20111092.6.1 连接查询上一页上一页下一页下一页返回首页返回首页1把子查询用作派生的表子查询是一系列SELECT语句。当一个查询依赖于另一个查询的结果时,子查询会很有用。使用子查询时,应注意:子查询要用括号括起来;只要需要一个值或一系列的值,就可以用子查询代替一个表达式子查询中不能查询包含数据类型是text或image的字段子查询中也可以再包含子查询,嵌套可以多至32层可以用子查询产生一个派生的表,用于代替FROM子句中的表。SE
52、LECTA*FROM(SELECT学号,姓名,年龄FROM学生表WHERE班级=GZ02计6)ASA2.6.2 子查询上一页上一页下一页下一页返回首页返回首页2把子查询用作表达式在T-SQL中,所有使用表达式的地方,都可以用子查询来代替。此时子查询必须返回一个单个的值或某一个字段的值。子查询可以返回一系列的值来代替出现在WHERE子句中的IN关键字的表达式。要求查询出GZ02计7班同学的平均年龄以及每个同学年龄与平均年龄的差:注意:当子查询跟随在比较运算符=、=之后,或子查询用作表达式时,子查询必须只能返回单值;当返回值多于一个的时候,则子查询只能跟在关键字IN后形成集合。2.6.2 子查询S
53、ELECT学号,姓名,年龄,(SELECTAVG(年龄)FROM学生表)AS平均年龄年龄-(SELECTAVG(年龄)FROM学生表)AS年龄差FROM学生表WHERE班级=GZ02计7上一页上一页下一页下一页返回首页返回首页3相关子查询相关子查询可被用作动态表达式,这个表达式的值相对于外层查询的每一行而变化。查询处理器为外层查询的每一个记录计算子查询的值,一次一行,而这个子查询每次都会被作为一个表达式而被计算并返回给外层查询。相关子查询是动态执行的子查询和外层查询间的一个非常有效的联合。SELECT学号,姓名FROM学生表WHERE90=60)AS及格人数(SELECTCOUNT(*)FRO
54、M选课表WHERE课程号=课程表课程号AND成绩60)AS不及格人数FROM课程表2.6.2 子查询上一页上一页下一页下一页返回首页返回首页4使用EXISTS与NOT EXISTS操作符在相关子查询中可以使用EXISTS和NOTEXISTS操作符判断某个值是否在一系列的值中。SQLServer处理带有EXISTS和NOTEXISTS操作符的子查询时:SELECT学号,姓名,班级FROM学生表WHEREEXISTS(SELECT*FROM选课表WHERE学号=学生表.学号AND课程号=1)ANDEXISTS(SELECT*FROM选课表WHERE学号=学生表.学号AND课程号=1)外层查询测试子
55、查询返回的记录是否存在;基于查询所指定的条件,子查询返回TRUE或FALSE;子查询不产生任何数据。要求检索出同时选修了1号课程和2号课程的同学的信息:2.6.2 子查询上一页上一页下一页下一页返回首页返回首页在使用SELECT语句进行查询时,如果只希望列出前几个结果,而不是全部结果,这时就可使用TOP关键字来选取输出的结果。SELECTTOP5学号,SUM(成绩)AS总分FROM选课表GROUPBY学号ORDERBY总分DESCSELECTTOPnpercentwithties查询列表要求检索出总分在前5位的同学的学号及其总分:使用TOP的格式为:2.6.3 使用TOP限制结果集上一页上一页
56、下一页下一页返回首页返回首页可以将两个或多个查询的结果组合为一个结果集,这就是合并多个结果集的含义。使用UNION可以实现这个目的。SELECT*FROM学生表WHERE班级=GZ02计6UNIONSELECT*FROM学生表WHERE班级=GZ02计7SELECT语句1UNIONSELECT语句2UNIONALL要求将对GZ02计6班和GZ02计7班学生的查询结果合并为一个结果集:使用UNION的格式为:2.6.4 合并多个结果集返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1数据库访问方法 Data control:DataControl DAO对象:DataAccess
57、Object RDO对象:RemoteDataObject ADO对象:ActiveXDataObject3.1.1数据访问简述上一页上一页下一页下一页返回首页返回首页1数据源类型数据源分成相应的三种:Jet数据源、ISAM数据源、ODBC数据源。 2三种数据源比较Jet数据源包括通过DAOAPI和MicrosoftAccess创建的数据源,一般被称为本地数据源,是VB默认的数据源。数据存取速度最快,访问效率最高。ISAM数据源通过即索引顺序存取方法创建的数据源,主要包括Btrieve、dBase、Excel、Foxpro、Lotus、Paradox和文本文件。该类数据源一般在创建时已经指定了
58、关键字,查询速度较快。ODBC是OpenDataBaseConnectivity的简写,一般将其译为开放式数据库连接,用户通过它所提供的函数来访问数据库里的数据,不管是针对本机上或者是最后端服务器的数据库都可适用。ODBC几乎能够处理所有类型的数据来源,无论是Foxpro、Paradox、dBase甚至文本文件、运算表文件等。ODBC是以*.dll(动态连接程序库)的类型存在于Windows操作系统中。ODBC数据源是指每个数据库的别名,我们称之为数据来源名称(DataSourceName,DSN),通过这个名称让应用程序标识并随时调用使用。3.1.2数据源上一页上一页下一页下一页返回首页返回
59、首页1Jet数据库引擎通过Access数据库引擎,还可以使用下列数据库: Btrieve(.DAT)dBASE(.DBF/.NDX)FoxPro(.DBF/.CDX/.NDX)Paradox(.DB,.PX)2ODBC(Microsoft和其它)驱动程序通过Microsft ODBC驱动程序,可以使用下列数据库:MicrosoftSQLServer、SybaseSQLServerOracle、Excel(.XLS)、Text(.TXT)Access(.MDB)、BtrievedBASE、FoxPro、Paradox3.1.3数据访问接口上一页上一页下一页下一页返回首页返回首页1可视化管理器 “
60、可视化数据库管理器”是VB6中一款界面友好的易于操作的数据库管理工具,通过它我们可以很方便地创建多种类型数据库并进行各种数据库的管理操作。3.1.4可视化数据管理器上一页上一页下一页下一页返回首页返回首页2可视化管理器应用 利用可视化数据管理器创建数据库的步骤:单击“外接程序”菜单,选择“可视化数据库管理器”菜单项,进入“visdata”窗口建库:选择菜单“文件”“新建”,选择数据库类型,保存数据库,进入数据库窗口建表:右击数据库窗口、选择“新建表”菜单项,再输入表结构(字段名称、类型、长度等),单击按钮“生成表”录入数据:双击表,输入数据3.1.4可视化数据管理器上一页上一页下一页下一页返回
61、首页返回首页3可视化管理器应用实例例:根据上述步骤建立一Access数据库(d:sample.mdb),再在其中建立如下结构的表(workertable) :字段名数据类型字段宽度编号Text3姓名Text8性别Text2工资Currency33.1. 4可视化数据管理器上一页上一页下一页下一页返回首页返回首页1数据环境设计器作用 创建Connection对象 基于Command对象的一个分组,或通过与一个或多个Command对象相关来创建Command的层次结构 基于存储过程、表、视图、同义词和SQL语句创建Command对象 为Connect和Recordset对象编写和运行代码 从数据环
62、境设计器中拖动一个Command对象中的字段到一个Visual Basic窗体或数据报表设计器3.1.5数据环境设计器上一页上一页下一页下一页返回首页返回首页2数据环境设计器使用选择“新建工程”对话框的“新建” “标准EXE ”工程,单击“确定”。选 择 “工 程 ”“添 加 更 多 的 ActiveX设 计 器 “ “Data Environment”右键单击“Connection1“对象并选择“属性” 选择“数据链接属性”对话框的 “提供者”选项卡,再选择“Microsoft Jet 4.0 OLE DB Provider”项 在“数据链接属性”对话框的“连接”选项卡中,输入或选择数据库名
63、,单击“测试连接” “确定” 右 键 单 击 “Connection1“对 象 并 选 择 “添 加 命 令 ”, 在“Connection1”下会出现Command1对象。右键单击“Command1”对象并选择“属性”,出现Command1属性对话框,在“Command1”属性框中,设置数据库对象为“表” 例:数据环境的应用3.1.5数据环境设计器上一页上一页下一页下一页返回首页返回首页1数据视图的应用 功能:查看当前工程所连接的数据库(包括表、视图、存储过程等)并供用户维护 启动:“视图”“数据视图窗口” 应用(操作见演示)添加数据环境添加数据链接3.1.6数据视图返回本章目录返回本章目录
64、上一页上一页下一页下一页返回首页返回首页1主要属性 Connect:用来设置所連接的数据库类型,其值是一个字符串。数据库类型有:Access、Foxpro2.0、dBase IV、Excel 8.0和Text等。 Databasename:数据库名称 Recordsource:记录来源(数据库中所有表和查询) Recordsourcetype:记录集类型(Table、Dynaset和SnapShot ) Recordset:该属性是一个由数据控件属性定义的对象。通过该对象可以移动记录的指针、查找符合指定条件的记录,得到记录的值、增加新记录或修改记录。3.2.1Data控件基础上一页上一页下一页
65、下一页返回首页返回首页2主要方法Refresh用来重建或重新显示与数据控件相关的记录,语法为: 数据控件名.Refresh例:Data1.DatabaseName=“d:vb6db1.mdb ”Data!.RecordSource=“workerTable ”Data1.RefreshUpdaterecord用来把所有约束控件的当前值存入相应的数据库中,语法为: 数据控件名.UpdateRecord3.2.1Data控件基础上一页上一页下一页下一页返回首页返回首页3主要事件 Validate(Action As Integer, Save As Integer ) 在移动指针和更新数据之前,V
66、isual Basic触发该事件,可在该事件中编写代码,根据具体情况进行相应的处理,如检查数据的合法性等 参数:action指用户对记录集的操作见表3.4save为True时,表示要保存被修改过的内容,若为False则表示不保存P96 例3.13.2.1Data控件基础上一页上一页下一页下一页返回首页返回首页1记录定位方法MoveFirst把记录指针移到第一个记录,使表中的第一个记录成为当前记录MoveLast把记录指针移到最后一个记录,使表中的最后一个记录成为当前记录MoveNext把记录指针移到下一个记录,使当前记录的下一个记录成为录前记录MovePrevious把记录指针移到前一个记录,
67、使表中的前一个记录成为当前记录3.2.2记录操作上一页上一页下一页下一页返回首页返回首页2 插入记录用AddNew方法增加一个新的记录,编辑记录后,用Update方法提交给数据库。Addnew的替代方法是把Data控件的EOFAction属性设置为2-AddNew。3.2.2记录操作3删除记录 Delete方法删除一个记录。4更新记录5Find方法Update方法保存对记录的任何改动使用Find方法可在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的一个记录,并使之成为当前记录上一页上一页下一页下一页返回首页返回首页2 插入记录用AddNew方法增加一个
68、新的记录,编辑记录后,用Update方法提交给数据库。Addnew的替代方法是把Data控件的EOFAction属性设置为2-AddNew。3.2.2记录操作3删除记录 Delete方法删除一个记录。4更新记录5Find方法Update方法保存对记录的任何改动使用Find方法可在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的一个记录,并使之成为当前记录上一页上一页下一页下一页返回首页返回首页DATA控件实例(P98)例3.2实例设计浅析:1界面设计(略)2涉及的主要控件属性Data1控件:connectDatabasenamerecordsource文
69、本框控件:Datasourcedatafield3代码设计说明(见源代码中解释)思考:若将窗体中的文本框改为控件数组的形式则代码应作如何变动?3.2.3实例操作返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1主要属性名称:指明控件的名称,默认由类名加上一个序号组成 Caption:标签所显示的文本的内容,最长可为1024字节。 Alignment:标签中文本的排列方式,有种可设置值:Left Justify(0,缺省的)、Center(1) 、Ringht Justify()Autosize:该属性有True和False两种设置值,缺省值False表示标签控件宽度不随标签框中
70、字符长度变化而变化,若文本长度超过标签控件的长度时,超过的部分不会被显示出来。当Autosize属性设为True时,标签控件的宽度随标签框中字符长度变化而变化 Backcolor:标签的背景色 Font:标签中文本的字体及大小 ForeColor:字体的颜色2实例P103 例4.14.1.1标签控件上一页上一页下一页下一页返回首页返回首页1主要属性名称:控件的名称属性Text:输入到文本框控件中的文本内容axlength:文本框中可输入字符串的最大长度。缺省0表示字符串的最大长度“不限”Multiline:属性值为True时,程序运行时可接受键入或显示多行文本,否则表示以一行的方式键入或显示P
71、asswordchar:将用户输入的所有字符以同一个字符显示。如设置为*则用户在文本框中输入任何字符都显示为*,但在计算机内存中还是保存原来所输入的字符。注:为了使该属性有效,Multiline属性值必须为False,Maxlength属性值不能为2实例P105 例4.2 例4.34.1.2文本框控件上一页上一页下一页下一页返回首页返回首页3主要事件change:当文本框内文本发生改变时被触发。如在文本框输入字符的同时,输入的字符能显示在标签上。Dblclick:当文本框被鼠标双击时触发。keypress:用户在键盘上按下一个键时触发,此事件可用来过滤用户输入的字符。如只允许输入字母或数字等。
72、gotfocus:文本框控件获得焦点时触发,用户可通过按TAB键切换,或单击对象等用户动作获取焦点。lostfocus:文本框失去焦点时发生,焦点的丢失或者是由于制表键移动或单击另一个对象操作的结果,或者是代码中使用SetFocus方法改变焦点的结果4实例P107 例4.44.1.2文本框控件上一页上一页下一页下一页返回首页返回首页1主要属性Alignment:文本的对齐方式。缺省值VbLeftJustify表示文本靠右对齐。另一个值VbRightJustify表示文本靠左对齐。Caption:复选框的显示的文本。Value:3个可选值:0表示没有选中(缺省值),1表示已选中,2表示变灰(变暗
73、)。Enabled:复选框控件是否有效,如果属性值为False,则复选框控件处于灰色状态不可用,否则,复选框控件可用。2实例P109 例4.54.1.3复选框控件上一页上一页下一页下一页返回首页返回首页1主要属性listindex:列表框控件中当前选择项目的索引号,从0开始计数。且只能在程序运行时可用list:所选择的列表项的内容Columns:列表框中的列数,取值范围是0到Nlistcount:控件的列表部分项目的个数,仅在程序运行时使用Multiselect:该属性值可为0、1、2三种值之一,0(缺省值)表示不允许复选,1表示鼠标单击或按下空格键在列表框中选中或取消选中项或者通过箭头键移动
74、焦点,2表示按下 SHIFT 并单击鼠标或按下 SHIFT 以及一个箭头键在以前选中项的基础上扩展选择到当前选中项。按下 CTRL 并单击鼠标在列表中选中或取消选中项4.1.4列表框控件上一页上一页下一页下一页返回首页返回首页2主要方法AddItem:用于向列表框控件添加项目,使用的语法是:list.additemitem,indexRemoveItem:用于在列表框控件中移去项目,使用的语法是:list.removeitemindexclear:用于清除列表框中所有的项目3实例P111 例4.6 例4.74.1.4列表框控件上一页上一页下一页下一页返回首页返回首页1主要属性style:控件的
75、显示类型和响应方式,缺省值0表示下拉式组合框,包括一个下拉式列表和一个文本框;1表示简单组合框,包括一个文本框和一个列表框,可以从列表框中选择或在文本框中输入;2表示下拉式列表,仅允许从下拉式列表中选择Sorted:组合框中显示的项目是否按字母排序3实例P116 例4.82主要方法三个方法Additem、removeitem、clear的使用与listbox的用法相同4.1.5组合框控件上一页上一页下一页下一页返回首页返回首页1主要属性Autosize:决定控件是否自动改变大小以显示其全部内容Picture:返回或设置PictureBox控件中要显示的图片Picture属性的使用语法:Obje
76、ct.picture=picture2实例P118 例4.94.1.6PictureBox控件上一页上一页下一页下一页返回首页返回首页1嵌入对象 新建一个标准EXE工程 单击工具箱上OLE控件并在窗体上拖放画出OLE容器控件 从插入对象对话框中单击“从文件创建”单选按钮 单击“浏览”按钮,出现一个打开文件对话框,在对话框中选择一个Word文档,单击确定按钮2保存编辑后的嵌入对象 打开文件语句的语法 : OpenpathnameFORBinaryASfilenumber保存文件语句语法: Object.savetofilefilenumber3. 读取嵌入对象 如:Object.Readfrom
77、filefilenumber4.1.7OLE容器控件显示二进制对象 上一页上一页下一页下一页返回首页返回首页4链接对象 新建一个标准EXE工程 单击工具箱上OLE控件并在窗体上拖放画出OLE容器控件 从插入对象对话框中单击“从文件创建”单选按钮 单击“浏览”按钮,出现一个打开文件对话框,在对话框中选择一个Word文档,链接复选框中打,单击确定按钮5链接对象的更新 更新语句的语法 :object.update4.1.7OLE容器控件显示二进制对象 返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1主要属性 Mask:决定控件的输入掩码,如输入有特定输入格式的的时间、电话号码等如,
78、要创建输入电话号码的输入掩码,可定义如下:MaskEdBox1.Mask=(#)-#Text:设置或返回包含在控件中的文本。该属性不能在设计时使用Cliptext:返回MaskedEdit控件中输入的数据2实例 P125 例4.104.2.1用MaskedEdit控件控制文本输入 上一页上一页下一页下一页返回首页返回首页1主要属性 Scrollbars:控件是否带有水平的或垂直的滚动条SelFontName:用于设置当前选定的文本的字体 SelFontSize:在程序运行时设置当前选定的文本的字体的大小 SelFontColor:在程序运行时设置 文字的颜色3实例 P128 例4.112. 主
79、要方法Selprint方法:将控件中格式化的文本发送给打印设备进行打印Loadfile方法的作用是为RichTextBox控件加载文件,使用语法:object.LoadFilepathname,filetypeSaveFile方法的作用是保存RichTextBox控件的内容为一个文件,使用语法:object.LoadFile(pathname,filetype)4.2.2用RichTextBox控件控制文本输入 上一页上一页下一页下一页返回首页返回首页2主要属性 Datasource:为DBCombo控件或DBList控件指出通过哪个数据控件绑定数据库。Datafields:将DBCombo控
80、件或DBList控件绑定数据库当前记录的哪个字段上。Rowsource:指定为DBCombo控件或DBList控件提供数据的数据控件。Boundcolumn:该属性用于设置源字段名,并把该字段的数据值提供给另一数据控件。ListField:指定DBCombo控件或DBList控件列表部分的数据从哪个字段获取3实例 P132 例4.121. 在工具箱中添加控件单击“工程”“部件”,弹出部件对话框单击“Microsoftdataboundlistcontrils6.0”选中它,然后单击“确定”4.2.3用Dbcomb和Dblist控件 上一页上一页下一页下一页返回首页返回首页2实例 P135 例4
81、.13 例4.141. 在工具箱中添加控件 单击“工程”“部件”,弹出部件对话框 单击“Microsoft Datagrid Contorl6.0 ”选中它,然后单击“确定” 4.2.4DataGrid控件 返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页2程序设计步骤 界面设置,包括控件选择、布局等 事件选取 代码设计1. 实例概要本实例旨在使用data控件、绑定控件访问数据库中数据3程序运行效果4.3通迅录应用程序实例返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页DAO功能 DAO模型提供了管理数据库系统所需要的全部操作,包括建立数据库、字段、索引和定义表
82、、建立表间关系、定位和查询数据库。 利用DAO和Jet引擎,Visual Basic可以访问的数据库主要有以下三种: 本地数据库,以MicrosoftJet数据库引擎所创建的数据库,数据库的扩展名为.mdb外部数据库,指使用“索引顺序访问方法(ISAM)”的数据库,如MicrosoftFoxpro,文本文件数据和MicrosoftExcel等。ODBC数据库,指符合ODBC标准的客户/服务器数据库,如MicrosoftSQLServer。另 外 , VB还 支 持 其 它 不 使 用 Jet数 据 库 引 擎 的 数 据 访 问 技 术,如RDO、直接调用ODBC应用程序接口(API)、ADO
83、等5.1.1DAO基本功能上一页上一页下一页下一页返回首页返回首页 VB数据库应用程序大体上可分为三部分即用户界面、数据库引擎和数据仓库:用户界面提供给用户用于交互的界面,通常是由窗体组成,可用来显示数据,并允许用户查看或更新数据,如添加记录或删除记录、执行查询等。数据库引擎Jet数据库引擎由一组动态链接库(DLL)文件组成,当运行应用程序时,这些文件被链接到Visual Basic程序,由它把应用程序的请求翻译成对数据库文件的物理操作,读取、写入和修改数据库,并处理相关事务,如索引、锁定等数据仓库指数据库文件中含有一个或多个表,对于Microsoft Access数据库来说,就是.mdb文件
84、。 5.1.2 VB数据库应用程序的构成上一页上一页下一页下一页返回首页返回首页1 DAO DAO对象是一个分层结构,包括对象、集合、属性和方法。如图5.1所示。 对象的分层结构意味着一个对象可以包含其它对象,而其它对象又可以包含下一层的对象。这种包含是通过集合来实现的,集合对象可以用来包含其它对象,被给定集合所包含的对象都属于同一类型5.1.3 数据访问对象(DAO)上一页上一页下一页下一页返回首页返回首页2 DAO对象结构图图5.15.1.3 数据访问对象(DAO)上一页上一页下一页下一页返回首页返回首页3 DAO对象构成说明DAO对象构成包括 : Dbengine、Workspace、D
85、atabase、Tabledef、Querydef、Recordset、Field、Index、User、Group、Property顶部的DBEngine是唯一不被其它对象所包含的数据访问对象,它有一个Workspace的集合,该集合包含一个或多个Workspace对象。 对象的表示:每个对象都可以通过其所属嵌套集合的完整“路径”来标识,路径中各集合之间用定位运算符“.“分隔,例如:DBEngine.Workspaces(0).Database(0).TableDefs(0).Fields(“Au_id”)多数DAO对象具有缺省的集合和属性,可用“!”表示,如,要访问记录集中“Au_id”字
86、段的值可写成:rstRecordset!Au_id5.1.3 数据访问对象(DAO)上一页上一页下一页下一页返回首页返回首页1 DBEngine对象 相当于Jet数据库引擎,它是与Jet引擎对应的最高层数据库对象,用来为数据库引擎设置系统范围的参数和缺省的工作空间。2 Workspace对象 Workspace对象支持同步操作,并作为打开的数据库的载体,它为数据库的操作定义子一个工作区。当开始执行应用程序时,Jet引擎就建立了一个缺省的Workspace对象,即DBEngineWorkspace(0)。如果需要,也可以打开一个附加的Workspace对象。每个工作区都有与之相关联的用户标志(I
87、D)和口令。 5.1.4 数据访问对象意义上一页上一页下一页下一页返回首页返回首页3 DataBase对象 Database对象是对数据库实施操作时首先要使用的对象,它包含描述一个数据库结构的所有信息。在对一个数据库操作前,必须先定义一个Database对象,然后根据需要对数据库进行访问。Database对象表示一个物理数据库,它可能是基本的Jet数据库或者是一个外部数据库,也可以表示一个物理的客户/务器器数据库,Database数据库用于定义数据库的表、关系及要保存的查询,还可用于打开Recordset对象。 4 TableDef对象一个数据库中有若干个表,这些表存放在TableDefs集合
88、中,集合中的每个成员是一个TableDef对象,每个对象对应于数据库中的一个表。TableDef对象含有两个集合:Field和Index,分别描述表中所有字段的索引的信息。打开一个数据库后,必须打开一个表才能对其中的数据进行操作。5.1.4 数据访问对象意义上一页上一页下一页下一页返回首页返回首页5 QueryDef对象 该对象用来保存对数据库进行各种操作的语句,即查询定义,所保存的查询为一个编译过的SQL语句。这些语句结果可能是产生一组数据,也可能是对某个表进行追加、插入、删除等。6 Recordset对象 该对象对应于一次数据库查询的结果,或者一个数据表视图 Recordset对象可分以下
89、五种类型 表型:类似于3.0版本中的Table对象,它是数据库中的一个表动态集型:一个动态表,它与对一个或多个数据库进行查询后所得结果相对应快照型:表示某个查询结果的表态信息,且不能被更新动态型仅向前型 5.1.4 数据访问对象意义上一页上一页下一页下一页返回首页返回首页7 Field对象 一个表中的所有字段信息都存放在集合Fields中,该集合中的每个成员是一个Field对象,它对应表中的一个字段,Field对象用来描述相应字段的信息。在TableDef、QueryDef、Recordset和Index对象中都有一个Field对象的的集合。Field对象的集合与Recordset对象中的当前
90、记录相联系,Recordset对象中的数据通过Field对象的Value属性读取和更新,Field对象随着Recordset对象中当前记录的改变而自动地更新 8 Index对象 Index对象保存的是与Table型Recordset对象或TableDef对象相联系的索引,用Index可以对表中的记录重新快速排序。当与Table型Recordset对象一起使用时,可以通过把对象的Index属性设置为Index集合中的一个索引名来指定当前索引 5.1.4 数据访问对象意义上一页上一页下一页下一页返回首页返回首页9 User对象该对象用来提高数据库的保密性。在DBEngine对象中有一个系统用户(U
91、ser)的集合,通过在User集合中增加或删除成员,可以建立或清除用户的账号,从而可以授予或取消某个用户对数据库的访问权。每个用户都有自己的名称和口令,可以单独授予访问各系统对象(如TableDef、QueryDef等)的权限。10 Group对象 Group对象存放了具有相似的访问权限的用户的集合。DBEngine对象中有一个组(Group)集合,组中的每个成员可以继承该组的对象访问权。例如,如果把访问某个对象的权限授予一个组,则组中的所有成员都具有对该对象的访问权。 5.1.4 数据访问对象意义上一页上一页下一页下一页返回首页返回首页11 Property对象 Property对象保存了与
92、某个对象相关的属性,无论是缺省属 性 还 是 用 户 自 己 定 义 的 属 性 , 都 将 保 存 在 对 象 的Properties集合中,通过向对象的Properties集合中添加用户自定义的属性,可以建立该对象的属性,即为对象增加新的属性,并将这些属性保存在数据库中,只有部分数据访问对象支持用户自定义属性,包括:DatabaseTableDefQueryDefTableDef.IndexTableDef.FieldQueryDef.Field5.1.4 数据访问对象意义上一页上一页下一页下一页返回首页返回首页12 其他对象 Parameter对象:该对象保存了与参数化查询有关的查询参数
93、。 Relation对象:Relation对象用来表示两个TableDef对象之间的关系。 Document对象:Document是可共享某个载体、且具有公共类型的对象。5.1.4 数据访问对象意义返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1 对象库 VB中的数据库编程实际上是先建立数据访问对象(如Database、Recrordset等),然后再使用对象的属性和方法。2 对象库引用 为了使用数据访问对象,需要设置对DAO对象库的引用。在一般情况下,不引用DAO对象库,就不能通过数据访问对象访问数据库。设置DAO对象库引用,步骤如下: 使用“工程”菜单中的“引用”命令选择
94、“MicrosoftDAO3.6ObjectLibrary”选项。如果要保持与以前版本兼容,则应选择“MicrosfotDAO2.5/3.5ObjectLibrary”。当然,也可以选择其它选项,应根据编写数据库实际情况选择相对应的对象库单击确定5.2.1 数据访问对象库上一页上一页下一页下一页返回首页返回首页1 创建一个数据库对象 语法:dim 对象变量名 as 对象 说明:对象包括:database等5.1.4小节所描述的对象imdbExampleAsDatabase2 对象赋值 在Visual Basic中,使用Dim语句声明变量。然后,用OpenDatabase方 法 返 回 一 个
95、数 据 库 句 柄 , 赋 值 给dbExample变量:setdbExample=OpenDatabase(“public.mdb”, rue,True)5.2.2 使用Database对象连接到数据库上一页上一页下一页下一页返回首页返回首页1 打开一个数据库 打开数据库的语法为: Setdatabase=workspace.OpenDatabase(dbname,options,read-only,connect)方括号里为可选项。其中:workspace是要包含数据库的工作区。省略为缺省工作区dbname是要打开的数据库名(全称)Options是一个布尔值,当该值为rue时,将以独享方式
96、打开数据库,否则以共享方式打开数据库 Read-only为rue时,以只读方式打开数据库,否则以读写打开数据库,缺省为FasleConnect是所连接的数据库的类型,如果省略则打开Microsoft ccess类型的数据库 例: DimdbsNorthwindAsDatabaseSetmydb=mywp.OpenDatabase(d:vb6Northwind.mdb,True,True)5.2.3 数据库打开和关闭上一页上一页下一页下一页返回首页返回首页2 关闭一个数据库当一个数据库不再使用,则应当将其关闭,释放资源。数据库通过Close方法关闭。该方法用来关闭一个打开的数据访问对象,也可以用
97、于Dynaset、Snapshot和able对象。lose语法为:bject.Close其中,Object是一个打开的Database、Recordset、Workspace、Dynaset、napshot或Table对象的名字。例:关闭上例打开的数据库mydb.Close注:在关闭一个数据库之前,应确保基于该数据库的其它对象已关闭,如ynaset、Table等对象已全部关闭,否则将显示出错信息5.2.3 数据库打开和关闭上一页上一页下一页下一页返回首页返回首页1记录集分类 表(Table)型记录:相当于单个表。定位记录时,Seek方法要快于Find方法。 动态集(Dynaset)型记录集:可
98、以引用任何表和查询结果。可以是一个或多个表的部分或全部记录。速度不如表类型的记录集。 快照(Snapshot)型记录集:数据表的拷贝,它记录在某一瞬间数据库的状态。 仅向前(Forward-only)型记录集:记录只能往前滚动,用于快速地浏览一下结果集。 动态(Dynamic)型记录集:从一个或几个基本表中查询到的结果集,可在其中添加、修改和删除记录。5.2.4 Recordset对象上一页上一页下一页下一页返回首页返回首页2记录集打开 打开语句:数据库名.openrecordset(source,type,options,lockedits) 说明source指明记录集的来源,可以是表、查询
99、或SQL语句type指定要建立的Recordset对象的类型,参见教材表5.1默认为dbopentableoptions是一个符号常量,用来指定新Recordset的特性(只读或可改等),参见教材表5.2lockedits是一个符号常量,用来控制记录集的锁定,取值如教材表5.3P159例5.1例5.2例5.35.2.4 Recordset对象上一页上一页下一页下一页返回首页返回首页3记录集关闭语法:Recordset对象.close4用Recordset对象的属性和方法操纵记录 用AddNew方法增加记录,语法为:recordset.AddNew其中recodset可以是已打开的Table或D
100、ynaset类型的记录集、Dynaset对象或Table对象。 用Update方法保存增加的记录,语法为: recordset.Update 注:用AddNew建立新的记录后,必须用Update方法保存增加的记录,否则追加无效 P161 例5.4 例5.5 5.2.4 Recordset对象上一页上一页下一页下一页返回首页返回首页4用Recordset对象的属性和方法操纵记录用Edit方法修改记录,语法为:recordset.Edit把当前记录拷贝到缓冲区中以便进行修改。P162例5.6用Delete删除记录,语法为:recordset.Delete删除打开表中的记录集中的当前记录。每执行一次
101、Delete只能删除一个记录。P163例5.75.2.4 Recordset对象上一页上一页下一页下一页返回首页返回首页4用Recordset对象的属性和方法操纵记录 recordset.Moverows,start说明:Start缺省为从当前记录开始移动,否则表示以书签(Bookmark)为基准开始移动;rows参数可为正或负数,正表示向前移动,负表示向后移动。例:myrs.Move+5myrs.Move5 recordset.MoveFirst:把记录指针移到第一条,使第一条记录成为当前记录recordset.MoveLast:把记录指针移到最后一条,使最后一条记录成为当前记录record
102、set.MoveNext:把记录指针移到下一条,使当前记录下一条成为当前记录recordset.MovePrevious:把记录指针移到前一条,使前一记录成为当前记录P164例5.85.2.4 Recordset对象上一页上一页下一页下一页返回首页返回首页4用Recordset对象的属性和方法操纵记录查找记录的四种Find方法语法为:recordset.FindFirst|FindLast|FindNext|FindPreviouscriteria如果没有找到匹配的记录,NoMatch属性为True。但要注意,Find查找的是表中第一个满足条件的记录。recordset是Dynaset或Sna
103、pshot类型的记录集对象。Criteria是一个条件表达式,可以查找动态集和快照类型的记录集中符合条件的记录。该表达式使用的操作符可以是“Like”或“=”,操作符的左侧通常为字段名,右侧为匹配模式。字段名放在方括号中,匹配模式放在单引号中。如:姓名Like陈*P167 例5.95.2.4 Recordset对象上一页上一页下一页下一页返回首页返回首页1Field对象的属性和方法操纵记录Field代表着表中的一个字段,对应着表中的一列数据,这些数据具有相同的数据类型和相同的属性。 Field对象的常用属性如教材表5.5所示例题5.2.5 Field对象返回本章目录返回本章目录上一页上一页下一
104、页下一页返回首页返回首页1创建数据库语法语句: set数据库对象=workspace.createdatabase(数据库名,dblangeneral)说明:Dblangeneral确定文本排序方式Workspace默认为缺省工作区。数据库名是一个完整的路径,文件的缺省的扩展名是.mdb。2创建数据库实例P169例5.105.3.1 创建数据库上一页上一页下一页下一页返回首页返回首页1建表语法 Set tabledef对象=数据库名.createtabledef(表名)如:setmtab=db.createtabledef(“stuinfor”)2创建字段语法Set field对象=table
105、def.createfield(字段名,类型,大小 )如:setfd=mtab.createfield(“姓名”,dbtext,8)3创建新表的步骤创建一个TableDef对象使用CreateField方法创建Field对象用Append方法把字段加入到TableDef对象Fields集合里。用Append方法把新的TableDef对象加入到Database对象的TableDefs集合中P169 例5.115.3.2使用TableDef对象上一页上一页下一页下一页返回首页返回首页1重要属性Attributes:关联属性设置如教材中表5.7所示。 Table:指定关系对象中的主表名 Foreig
106、nTable:外部表名 Name:用户自定义的Relation 对象的名称2创建关联Set relation对象=database.createrelation(name,table,foreigntable,attributes)Name参数为建立的Relation对象的名字,其它参数与对应的属性值一致。括号里的参数都是可选的5.3.3使用Relation对象上一页上一页下一页下一页返回首页返回首页3利用relation建立表间关联步骤 创建一个Relation对象 创建一个字段,并用Append方法把它加入到Fields集合中,此字段定义表的主键 定义Relation的属性,用Append
107、方法把新的Relation对象加入到Database对象的Relations集合中。P171 例5.125.3.3使用Relation对象上一页上一页下一页下一页返回首页返回首页1创建索引的语法Setindex对象=tabledef.createindex(name)Name为新生成的索引名。2利用index创建索引的步骤创建一个新的Index对象。 利用新建的索引对象的CreateField方法创建一个字段对象。 将Field对象加入到Index对象的Fields集合中。 将Index对象加入到TableDef对象的Indexes集合中。 P172 例5.135.3.4使用Index对象上一
108、页上一页下一页下一页返回首页返回首页1建立查询语句Set querydef = object.CreateQueryDef (name,sqltext)Name参数为新建的查询指定一个名字,如果Name是一个空串则生成一个临时的QueryDef对象。Sqltext参数表示SQL查询语句。2利用OpenRecordset方法运行queryDef查询的步骤创建一个QueryDef对象,将该对象添加到数据库的QueryDefs集合中。如果在创建QueryDef对象时没有指定SQL查询语句,则须给SQL属性赋值。用QueryDef对象的OpenRecordset打开的记录集就是查询返回结果集。 P17
109、2 例5.143利用EXECUTE方法运行queryDef查询P173 例5.155.3.5 使用Querydef对象返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1实例说明2实例设计步骤界面设计,包括静态属性设置、控件大小布局等 事件代码设计编写 3实例效果本实例旨在运用DAO对象访问数据库记录集数据5.4 DAO应用实例返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1 什么是ODBC2 ODBC的构成 ODBC应用程序ODBC应用程序的主要任务有: 选择一个数据源并连接 检索结果(如果有的话) 处理错误 提交或回滚包括SQL语句的事务 断开数据源 ODB
110、C驱动程序管理器管理ODBC驱动程序,负责将适当的ODBC驱动程序加载到内存中,并将以后的请求送给正确的ODBC驱动程序。 open database connectivity, 一种数据库访问标准,以标准的SQL查询语言来存取所连接的数据源,实现用相同的代码访问不同格式的数据库。6.1.1创建ODBC数据源上一页上一页下一页下一页返回首页返回首页2 ODBC的构成ODBC驱动程序负责将SQL请求发送给关系数据库管理系统(RelationalDatabaseManagementSystem,RDBMS),并且把结果返回给ODBC驱动程序管理器,然后,再由ODBC驱动程序管理器把这些请求传送给O
111、DBC应用程序 数据源(Data Source Name,简称DNS)由用户要访问的数据以及与之相关的操作系统、DBMS和网络平台组成,是连接数据库驱动程序和数据库系统的桥梁6.1.1创建ODBC数据源上一页上一页下一页下一页返回首页返回首页1用DAO数据控件访问数据库Data控件三种访问数据源的方法:设计时设置Data控件的属性,让Data控件自己创建一个游标。这种技术对缺省的Workspaces(0)对象创建了两种DAO/JetRecordset对象(动态或快照对象)之一。使用OpenRecordset方法创建一个Recordset对象,然后把Data控件的Recordset属性设置为该结
112、果集。这种技术适于使用独立的Recordset对象或通过参数查询或QueryDef对象创建的结果集。使用Opendatabase方法来创建一个Database对象,然后把Data控件的Database属性设置为该Database对象。6.1.2 Dao数据控件和ODBCDirect上一页上一页下一页下一页返回首页返回首页2. 实例P184 例6.1说明:利用控制面板创建ODBC数据源,名为db_sample,数据库为sample(SQLServer数据库),服务器名、用户名及密码则应根据实际情况来定。6.1.2 Dao数据控件和ODBCDirect上一页上一页下一页下一页返回首页返回首页3用O
113、DBCDirect访问数据库在VB中,一般通过以下步骤使用ODBCDirect:在VB中制作一个对MicrosoftDAOObjectLibrary的参考。创建一个ODBCDirectWorkspace对象。打开一个Connection或者QueryDef对象。创建Recordset或者QueryDef对象。使用Recordset或者QueryDef方法处理数据。关闭Recordset或者QueryDef对象。关闭Connection或者Database对象。P191 例6.26.1.2 Dao数据控件和ODBCDirect返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1远程
114、控件主要属性ResultSetType指示已创建的或将要创建的rdoResultset的游标类型,其值可以是静态类型或键值类型LoginTimeout打开连接时,等待产生超时错误的时间。如果超时就返回一个错误,0则表示永不超时。MaxRows指向从查询或操作查询中返回的最大行数。如果设置为0表示无限制。Options指定该控件是否异步查询。当估计一个查询可能要花费好几分钟执行时,应使用异步操作。Prompt打开一个连接时,Connect属性应当包含足够的用于建立连接的信息。QueryTimeout等待一个查询完成的秒数,超时则返回错误BatchSize设置在一个批处理中可以发送多少条语句。6.
115、2使用远程数据控件访问数据上一页上一页下一页下一页返回首页返回首页2光标类型3RemoteData控件应用实例常数值描述rdUseIfNeeded0ODBC驱动程序选取适当的光标风格。rdUseodbc1Remotedata将使用ODBC光标库rdUseServer2使用服务器端的光标rdUseClientBatch3RDO将使用客户端批光标库rdUseNone4结果集不作为光标返回P197例6.36.2使用远程数据控件访问数据返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1什么是RdoEnginerdoEngine表示远程数据源,该对象包含了其他全部RDO对象。当创建新的r
116、doEnvironment、rodConnection或者rdoResultset对象时,rdoEngine对象使用缺省属性。2RdoEngine的主要属性rdoDefaultCursorDriver:指定该连接是使用本地(ODBC)游标还是服务器端游标。缺省为rdUseIfNeeded指定将使用本地ODBC游标RdoDefaultPassword、rdoDefaultUser:提供登录ID和密码。缺省值是空字符串,此时须由其他RDO对象或由ODBC驱动程序提示用户输入 RdoDefaultErrorThreshold:指定缺省的错误严重等级。 RdoDefaultLoginTimeout:控
117、制rdoEngine等待与远程数据源 建立连接的时间。缺省值为15秒。6.3.1 用rdoEngine设置数据库引擎的属性上一页上一页下一页下一页返回首页返回首页3创建一个新的rdoEnvironment对象 如:DimenAsrdoEnvironmentSeten=rdoEngine.rdoEnvironment(0)注:对rdoEnvironment对象的初次引用将会自动创建rdoEngine对象。4删除rdoEnvironment对象 如: En.close6.3.1 用rdoEngine设置数据库引擎的属性上一页上一页下一页下一页返回首页返回首页1建立到远程数据源的物理链结语法:Rdo
118、environment.OpenConncetion(dsName,prompt,readonly,connect,options)参数描述dsName登录的ODBC数据源的名称,或是一个零长度字符串(”)promptVariant或常数,确定操作如何执行,见教材表6-12readonlyBoolean值,true则连接为只读,False则连接为读、写。默认连接为读、写。Connect字符串表达式,用于将参数传递到ODBC驱动器管理器以打开数据库6.3.2 用rdoConnection对象建立连接上一页上一页下一页下一页返回首页返回首页2如何使用rdoConnection对象 代码:6.3.2
119、 用rdoConnection对象建立连接 DimcnAsrdoConnectionDimsConnectStringAsStringsConnectString=UID=sa;PWD=;DATABASE=authors;”_“SERVER=yingyl;DRIVER=SQLSERVER;DSN=;SetEn=rdoEnvironments(0)conn$=sConnectStringSetCn=En.OpenConnection(dsName:=,_Prompt:=rdDriverNoPrompt,_Connect:=conn$)上一页上一页下一页下一页返回首页返回首页1使用rdoConne
120、ction对象的OpenResultset方法创建rdoResultset结果集 语法如:DimrsasrdoResultsetSetrs=cn.OpenResultset(select*fromauthorsorderbyau_id,rdOpenKeyset,rdConcurRowVer)参数说明:第一个参数:包含将要用来创建结果集的SQL语句,也可包含rdoTable对象或者rdoQuery对象。第二个参数:指定结果集的游标类型。见教材表6-13所示。第三个参数:用来表示并发控制的类型。见教材表6-14最后一个参数:控制结果集是同步创建还是异步创建。见教材表6-156.3.3用rdoRes
121、ultset对象操作数据上一页上一页下一页下一页返回首页返回首页P208如何使用rdoQuery对象执行查询 实例6.3.4用rdoQuery对象运行查询上一页上一页下一页下一页返回首页返回首页1rdoTable对象,可以完成以下几个任务: 使用OpenResultset方法来对一个基于基本表的所有行创建一个rdoResultset对象。这事件上是执行了一个SELECT*FROMtable的一个查询。使用Name属性来确定表或视图的名字。使用Type属性来确定表的类型。ODBC数据源驱动程序用字符串确定支持的表类型。对于SQLServer,rdoTable的Type属性的可能设置为Table、
122、View、SystemTable、GlobalTemporary、LocalTempory、Alias和Synonym。2如何使用rdoTable对象 P209 实例实例6.3.5 用rdoTable对象访问表返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1实例功能利用RDO对象来设计一个简单的应用程序来实现浏览、更新6.1.2中所讲的sample数据库中authors表中的信息。2.实例程序6.4 实例返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1ADO对象库在Visual Basic应用程序中使用ADO对象前,必须保证ADO已经安装。一般来讲,在正常安
123、装VB6.0时会自动安装ADO库,ADO库的完整名称为“Microsoft ActiveX Data Object 2.5 Libary”2ADO对象库引用在确保VisualBasic正常安装后,可在VB项目中引用ADO库,然后就象使用DAO或RDO一样使用ADO对象。步骤如下:在VisualBasic中建立一个标准exe工程。选择菜单“工程”,再选择菜单项“引用”。在引用对话框中选择MicrosoftActiveXDataObject2.5Library,再单击确定按钮。例7.1利用ADO对象访问ACCESS数据库3实例7.1.1 创建ADO对象上一页上一页下一页下一页返回首页返回首页1AD
124、O控件的引用利用鼠标右键单击工具箱,在弹出菜单中选择“部件”,打开部件对话框如图7.1左,在“部件”对话框中选中“MicrosoftADODataControl6.0(OLEDB)” ,按“确定”2 ADO Data控件的主要属性Caption(标题)Connectionstring控件连接的数据源Commandtype记录源的类型Recordsource记录源Recordset(对象)7.1.2 ADO 控件和绑定控件上一页上一页下一页下一页返回首页返回首页3绑定控件绑定控件指的是通过将控件的属性“绑定”到ADO控件上,实现与数据库的连接,用来显示、编辑和查询等数据处理。绑定控件一般都具有d
125、atasource、datafield、datamember、dataformat等属性,用于连接数据源。常用的ADO绑定控件有textbox、combobox、datalist、datagrid、DBgrid等(绑定控件的具体使用参见第4章)。当使用ADO和绑定控件访问数据库时,只需设置各绑定控件的Datasource为ADO数据源以及将各绑定控件的Datafield设为相应的字段即可 4 实例例7.27.1.2 ADO 控件和绑定控件上一页上一页下一页下一页返回首页返回首页1数据源数据源名称Data Source Name(DSN)是一个安装了数据库的服务器名称,是一个描述性的名称。当服务
126、器中的数据库发生变化、ODBC驱动程序改变或者网络设置更新时,数据源名称便会发生改变。2 数据源打开Connection对象.openconnectionstring,userid,password参数说明:connectionstring:即Connection对象的connectionstring属性userid:用户登录的名称password:用户登录的密码P228例7.3打开一个数据源3数据源关闭Connection对象.close7.1.3 数据源打开与关闭返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页 主要属性Connectionstring用于设置ADO所连接的
127、数据库 Provider用于指定OLEDB提供者,以便告诉ADO将使用哪个OLEDB提供者执行服务器命令;缺省提供者为OLEDB的ODBC(具体参见表7.4)7.2.1 使用ADO Connection对象上一页上一页下一页下一页返回首页返回首页1 ADO Recordset对象四种临时表Dynamic:可看到其他用户的修改操作Keyset:不可看到其他用户的修改操作Static:静态备份数据Forward-only:只能向前移动记录2打开Recordset对象Recordset对象.opensource,activeconnection,cursortype,locktype,options
128、source:指定记录的来源,随着提供者的不同而不同,可以为:返回记录的Command对象、SQL语句、表名、已存储的过程名。包含一个已存在的记录集的文件名。包含一个已存在的记录集的流对象名。带有数据的文件或其他地方的URL。Activeconnection:连接字符串Locktype(表7.7)P234例7.47.2.2 使用ADO Recordset对象上一页上一页下一页下一页返回首页返回首页1 Record对象ADORecord对象可以是记录集中的一行,也可以是文件系统中的一个文件或文件夹。当OLEDB支持异构数据仓库时,Record对象代表记录集中的一行。2Field对象ADOFiel
129、d是记录集中的某个单独的列,在功能上与RDOColumn、DAO的field对象相似。在ADO的字段数据存取中通常使用fields集合来读取记录集中的数据3实例P240例7.57.2.3 使用ADO Record对象和ADO Field对象上一页上一页下一页下一页返回首页返回首页1 Command对象ADO Command对象是数据源中一个独立的结构,它可以产生过程数据。当使用ADO Connection对象成功建立与数据源的连接后便可以通过ADO Command命令实现对该数据源的操作。ADO Command对象与RDOQuery、DAO的querydef对象功能相似 P242 例7.62
130、Parameter对象ADO parameter对象是Command对象的一个独立参数,而Command对象通常为一个SQL查询或一个已存在的过程,因此Parameter常作为一个查询参数或过程参数 P243 例7.7 7.2.4 使用ADO Command和Parameter对象执行查询上一页上一页下一页下一页返回首页返回首页 ADO Error对象ADO Error对象与rdoerror、DAO的error对象功能相似,主要包含数据提供程序出错时的扩展信息。ADO Connection对象提供了一个Errors集合,它可提供有效的错误信息,而ADO Error对象则表示一个单独的错误信息,
131、当一个ADO对象发生错误时由此产生的所有的Error都会添加到Connection Errors中。ADO Error对象用于封装ADO错误或者警告,这个错误或警告可能是由ADO自己产生的,也可能是由数据提供者或确定的数据源产生的,通过对Error对象的访问可以确切知道发生了什么错误 P245 例7.87.2.5 使用ADO Error对象返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1Data Report设计器构成 报表标头:报表顶部显示的内容,如报表标题、作者或数据库名。报表注脚:报表底部显示的内容,如摘要信息或联系地址、姓名。页标头:每页顶部显示的内容,如报表标题。页
132、注脚:每页底部显示的内容,如页数。细节:报表所要处理的数据,主要为数据源中的记录部分。 2Data Report设计器结构图8.1.1 报表设计器DataReport的构造上一页上一页下一页下一页返回首页返回首页1创建报表具体步骤 在VB标准工程中,选择“工程”中的“添加Data Report”打开一个已经存在的数据环境DataEnvironment分别设置DataReport1的datasource和datamember属性:Datasource属性:用于设置Data Report中数据来源。Datamember属性:用于设置Data Report中数据来源表。运用下列两种方法分别设置Dat
133、a Report的报表头尾、页头尾和细节利用Data Environment拖放相应的字段到所需处。利用Data Report的控件工具箱进行报表的控件设置。8.1.2 报表创建上一页上一页下一页下一页返回首页返回首页3创建生成报表实例 P250例8.18.1.2 报表创建2数据报表控件 RPTLabel:用于在报表或页的标头显示说明信息或标识字段。RPTTextbox:用于在报表上放置规定的格式文本。RPTImage:用于在报表上放置图形。RPTShape:用于在报表上放置矩形、三角形或(椭)圆形。RPTLine:用于在报表上绘制标尺。RPTFunction:主要用于计算数值上一页上一页下一
134、页下一页返回首页返回首页1生成计算字段 在数据环境中利用SQL语句生成利用环境设计器创建合计字段利用RPTFunction控件生成2数据分组 利用数据环境进行数据分组3强制分页 操作步骤如下:在报表设计器中单击需强制分页的对象的头部设置该对象的ForcePageBreak属性,其值可分别为:0-rptPageBreaknone、1-rptPageBreakBefore、2-rptPageBreakAfter、0-rptPageBreakBeforeAndAfter8.1.3 数据报表的特殊功能设计上一页上一页下一页下一页返回首页返回首页4添加日期时间页号标题 在页标头/注脚处添加适当的labe
135、l控件,再设置其caption为相应的值(如表8.1);或者直接右键单击报表的相应位置,选择菜单“插入控件”,然后根据需要选择相应菜单项也可完成5实例 例8.2 在例8.1所生成的报表rptstu的基础上,增加如下要求:报表中的数据由information表的姓名、学号、班级,score的数学、英语、经济学构成,并按系分组求各成绩的总分和各成绩的平均分,并在页头显示当前日期,在页脚显示当前页号。8.1.3 数据报表的特殊功能设计上一页上一页下一页下一页返回首页返回首页1报表的预览 报表对象名.show(modal,ownerform)说明:可选参数的作用与其在窗体中的作用相同,如modal可为
136、vbmodal等。例:rptstu.show2报表的打印 报 表 对 象 名 .printreport(showdialog as Boolean=false,range aspagerangeconstants=rptrangeallpages,pagefrom,pageto)说明:参数showdialog省略则直接输出到打印机,否则向用户提示打印细节。Range用于设置打印范围。Pagefrom确定打印的第一页,pageto确定打印的最后一页。例:rpthz.printreport(true,1,5)8.1.4 报表预览与输出返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页
137、1ACCESS报表设计工具 利用系统提供的工具自动创建报表利用向导创建报表利用报表“设计”视图创建报表8.2.1 报表设计工具上一页上一页下一页下一页返回首页返回首页1纵栏式自动创建报表 创建纵栏式报表的步骤如下:打开数据库,在数据库窗口中单击对象栏的“报表”按钮,然后单击工具栏中的“新建”按钮,打开“新建报表”对话框。从“新建报表”对话框中选择“自动创建报表:纵栏式”项,并确定报表对象的数据来源表或查询,再单击“确定”按钮单击工具栏的“保存”按钮,输入报表的名称,即可保存报表2表格式自动创建报表 打开数据库,在数据库窗口中单击对象栏的“报表”按钮,然后单击工具栏中的“新建”按钮,打开“新建报
138、表”对话框。从“新建报表”对话框中选择“自动创建报表:表格式”项,并确定报表对象的数据来源表或查询,再单击“确定”按钮。单击工具栏的“保存”按钮,输入报表的名称,即可保存报表。8.2.2 使用自动报表方式创建报表上一页上一页下一页下一页返回首页返回首页使用报表工具自动创建报表 打开数据库,在数据库窗口中单击对象栏的“表”按钮,从对象列表框中选择表作为数据来源。然后单击工具栏中的“新对象”按钮边的下拉按钮,从“新对象”菜单中选择“自动报表”命令单击工具栏的“保存”按钮,输入报表的名称,即可保存报表 8.2.2 使用自动报表方式创建报表上一页上一页下一页下一页返回首页返回首页1使用“报表向导”创建
139、报表 使用“报表向导”创建包含单表的报表的步骤如下:打开数据库,在数据库窗口中单击对象栏的“报表”按钮,然后单击工具栏中的“新建”按钮,打开“新建报表”对话框。从“新建报表”对话框中选择“报表向导”项,确定报表对象的数据来源。选择要在报表中显示的字段。选择分组级别,将报表中的数据按照一个或多个列进行分组打印。选择报表的排序字段、升降序和汇总信息。确定报表的布局方式、样式、名称,单击“完成”按钮,保存报表8.2.3使用报表向导创建报表上一页上一页下一页下一页返回首页返回首页2使用“图表向导” 打开数据库,在数据库窗口中单击对象栏的“报表”按钮,然后单击工具栏中的“新建”按钮,打开“新建报表”对话
140、框。从“新建报表”对话框中的工具列表中选择“图表向导”项,并确定报表对象的数据来源表或查询,同时可确定图表的数据所对应的字段。确定图表的类型、数据的布局方式、图表的标题、是否显示图例,单击“完成”按钮可保存报表8.2.3使用报表向导创建报表上一页上一页下一页下一页返回首页返回首页1使用“设计”视图创建报表的步骤打开数据库,在数据库窗口中单击对象栏的“报表”按钮,然后单击工具栏中的“新建”按钮,打开“新建报表”对话框。从“新建报表”对话框中的工具列表中选择“设计视图”项,并确定报表对象的数据来源表或查询然后将所需的字段直接拖放到设计报表的主体中,并设置报表的其他位置的相应信息。保存报表。8.2.
141、4使用“设计”视图创建报表返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1创建对Access引用 通过“工程”“引用”菜单选择“MicrosoftAccess9.0ObjectLibary”8.3.1用VB的Automation技术输出Access报表上一页上一页下一页下一页返回首页返回首页1主要方法 Access.opencurrentdatabase(filepathasstring,exclusiveasBoolean=false)说明:filepath指的是包括路径的完整数据库名称;exclusive指明数据库是共享还是独享。Access.docmd.openrepo
142、rt(reportname,viewasacview=acviewnormal,filtername,wherecondition)说明:view指明报表的输出状态,filtername指明报表过滤的名称,wherecondition指明符合条件的报表。Access.closecurrentdatabase实例 例8.3:利用Automation技术访问报表rptstu8.3.2用VB的Automation技术输出Access报表实例返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页1Printer对象的Scalemode属性 Vbuser用户定义的坐标系统Vbtwips缇(1/
143、20点或1/1440英寸)Vbpoints点(1/72英寸)Vbpixels像素(由屏幕分辨率确定)Vbcharacters字符(120缇*240缇)Vbinches英寸Vbmillimeters微米Vbcentimeters厘米VbhimetricHimetricVbcontainerposition控件的容器用于确定控件位置的单位Vbcontainersize控件的容器用于确定控件大小的单位8.4.1建立Printer的坐标系上一页上一页下一页下一页返回首页返回首页1VB Printer对象的重要属性方法 currentX和currentY属性用于控制页面的当前打印位置。font(包括fo
144、ntbold、fontitalic、fontunderline、fontname等)属性控制页面上所打印的文本的字体属性。Print方法负责打印处理页面上的文本,这是VBPrinter对象的最重要的方法,但在VB的智能化方法中并无此方法列出。Killdoc方法用于取消打印。Enddoc方法用于将整个打印作业发送到打印机8.4.2向Printer对象输出Recordset上一页上一页下一页下一页返回首页返回首页利用VBPrinter对象创建报表 程序代码8.4.3实例 返回本章目录返回本章目录上一页上一页下一页下一页返回首页返回首页随着计算机技术的不断发展,信息管理自动化程序的不断提高,数据库在
145、信息管理中的作用日益重要,数据库已成为科学地管理和利用数据的不可缺少的技术。由于从文字处理器到电子表格等标准化的商业应用程序的功能变得如此强大,以至于高级用户编程几乎无一例外地都与数据库应用程序有关。这些年来,VisualBasic已经逐渐成为有效地创建这些解决方案的最佳工具。 VisualBasic6.0是微软公司推出的可视化编程语言。在各种可视化编程语言中VisualBasic是最容易学习的一种编程语言,它提供了生成向导、拖放技术、属性检查及丰富的功能控件,是目前可视化程度最高的开发工具。另外,VisualBasic6.0提供了许多新的控件和工具,使VisualBasic6.0成为开发Wi
146、ndows下应用程序最迅速、最简捷的开发工具。VisualBasic6.0作为应用程序的开发“利器”也表现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得得心应手。但即便如此,数据库应用程序的开发仍然算得上是VB编程中的难点,这是因为你不仅要熟悉VB中关于数据库编程方面的知识,还要了解数据库的知识。 前言上一页上一页下一页下一页返回首页返回首页主任:主任:俞瑞钊副主任:副主任:陈庆章周必水刘加海委员委员 (以姓氏笔画为序)王雷王筱慧方程方锦明卢菊洪代绍庆吕何新朱炜刘向荣江爱民江锦祥孙光第李天真李永平李良财李明钧李益明余根墀汪志达沈凤池沈安衢张元张学辉张锦祥张德发陈月波陈晓
147、燕邵应珍范剑波欧阳江林周国民周建阳赵小明胡海影秦学礼徐文杰凌彦曹哲新戚海燕龚祥国章剑林蒋黎红董方武鲁俊生谢川谢晓飞楼丰楼程伟鞠洪尧秘书长:秘书长:熊盛新上一页上一页下一页下一页返回首页返回首页1.1.由于本课件引用了较多的例题,因例题要求,本电子课件由于本课件引用了较多的例题,因例题要求,本电子课件最好放在最好放在“D:VBD:VB数据库应用课件数据库应用课件”文件夹下使用。文件夹下使用。2.2.本软件用本软件用PowerPointPowerPoint制作而成,播放亦在其状态下进行。制作而成,播放亦在其状态下进行。3.3.本软件内容丰富、新颖,突破传统教学模式,在多媒体教室使用本软件内容丰富、
148、新颖,突破传统教学模式,在多媒体教室使用时,使用者应注意这一变化,改变教学方法,充分发挥其功效。同时时,使用者应注意这一变化,改变教学方法,充分发挥其功效。同时也应注意本软件仍是一教学辅助工具,授课时应与讲授相结合使其更也应注意本软件仍是一教学辅助工具,授课时应与讲授相结合使其更好地为教学服务。好地为教学服务。4.4.本软件内容完整,自成体系,对于使用者的不同情况,用本软授课本软件内容完整,自成体系,对于使用者的不同情况,用本软授课时,可补充所需内容,链入其它媒体信息,或同其它软(如时,可补充所需内容,链入其它媒体信息,或同其它软(如CS CS ChemDrawChemDraw等)等)共同使用,以达到多媒体辅助教学的良好效果。共同使用,以达到多媒体辅助教学的良好效果。 . .多媒体教学信息量大,传递速度快,用本软件授课时,应熟悉多媒体教学信息量大,传递速度快,用本软件授课时,应熟悉 播放程序,注意控制播放速度,要使观看者有充足的思播放程序,注意控制播放速度,要使观看者有充足的思 考时间。考时间。 注意事项