VB与数据库.docx
《VB与数据库.docx》由会员分享,可在线阅读,更多相关《VB与数据库.docx(35页珍藏版)》请在冰点文库上搜索。
VB与数据库
从20世纪50年代中期开始,计算机的应用由科学研究部门扩展到企业、行政部门,数据处理迅速上升为计算机应用的主要方面。
在计算机的三大应用中(科学计算、数据处理及过程控制),数据处理所占比重约为70%左右。
在60年代末,数据库技术就是作为数据处理中的一门技术发展起来的。
第一章数据库编程基础
1.1.1基本概念和术语
1)数据(Data):
是描述事物的符号记录。
数据与其语义是不可分的,数据需要经过语义解释。
2)数据库(Database,简称DB):
是统一管理的相关数据的集合;能为各种用户共享,具有最小冗余度、数据间关系密切,而又有较高的对程序独立性等特点。
3)数据库管理系统
(DataBaseManagementSystem,简称为DBMS)DBMS是位于用户与操作系统间的一层数据管理软件,它为用户或应用程序提供了访问DB的方法,包括DB的建立、查询、更新和各种数据控件等;DBMS的目的:
提供一个可以方便地、有效地存取数据库信息的环境。
4)数据库系统(DataBaseSystem,DBS)DBS是实现有组织的、动态的存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即它是采用了数据库技术的计算机系统。
5)数据库技术
数据库技术是研究数据库的结构、存储、设计、管理和使用的一门软件学科。
6)数据库系统的组成如下图所示
1.1.2关系型数据库中的基本概念
在介绍关系型数据库的基本概念之前,我们先介绍一下关系模型:
关系模型(relationalmodel)是由若干个关系模式组成的集合。
其主要特征是用表格结构表达实体集,用外键表示实体间联系。
关系模型由关系结构、关系操作集合和完整性约束三部分组成。
1)单一数据结构关系
2)关系模型的数据结构非常单一。
在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。
在用户看来,关系模型中数据的逻辑结构是一张二维表。
2)关系操作
关系模型中常用的关系操作包括:
选择(Select)、投影(Project)、连接(Join)、并(Union)、交(Intersection)、差(Difference)等查询(Query)操作和增加(Insert)、删除(Delete)、修改(Update)操作两大部分。
查询的表达能力是其中最主要的部分。
关系操作的特点是集合操作方式,即操作的对象和结果都是集合。
这种操作方式也称为一次一集合的方式。
相应的非关系数据模型的数据操作方式为一次一记录的方式。
关系操作涉及关系代数、元组关系演算和域关系演算。
另外还有一种介于关系代数和关系演算之间的语言SQL(StructurelQueryLanguage)。
3)关系的三类完整性约束:
实体完整性、参照完整性和用户自定义完整性。
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。
在关系型数据库中数据以行和列的形式存储,为了便于理解,我们称这一系列的行和列为表,一组表组成了数据库。
关系型数据库是根据表、记录和字段之间的关系进行组织和访问的一种数据库,他通过若干表来存储数据,各数据项之间用关系来组织,关系(relationship)是表之间的一种连接,通过关系,可以更灵活地表示和操纵数据库中的数据;另外,用户可以非常方便的使用查询(Query)来检索数据库中的数据,一个Query是一个用于指定数据库中行和列的SELECT语句。
关系型数据库中通常包含如下3部分:
1)端应用程序(client)
2)数据库服务器(server)
3)数据库(Database)
以下我们将简要的介绍一下关系型数据库中的一些基本概念:
1)表:
表是一种按行和列排列的相关信息的逻辑组,类似于工作表单。
例如,在表1.1中包含了一系列有关学生的信息。
表1.1学生基本情况表
学号
姓名
性别
年龄
班级
0201
张明丽
女
20
02-1
0202
王维
男
21
02-1
0203
李雯
女
20
02-2
0204
刘华
男
22
02-2
2)记录:
在表1.1中,有关学生的信息存放在表的各个行中,这些行被称为记录(Record)。
一般来说,数据库表中的记录任意两行都不能相同,不能有两个所有条件都一样的学生。
例如表1.1有4个记录,他们分别描述了四个学生的基本情况。
3)字段:
数据库表中的每一列称作一个字段。
表是由其包含的各种字段定义的,每个字段描述他所包含的数据。
创建一个数据时,为每个字段分配一个数据类型、最大长度和属性。
字段可包含各种字符、数字甚至图形。
4)关键字:
关键字是表中的一个或多个字段,是为快速检索而被索引的。
关键字可以是唯一的,也可以是非唯一的,取决于是否允许重复。
唯一关键字可以指定为主关键字,用来唯一标识表的每行。
例如,在上面的例子中,学号是表的主关键字,因为学号可以唯一的标识一个学生。
5)索引:
为了更快的访问数据库,大多数数据库都使用索引。
数据库表的索引算法是比表搜索算法更快的排序算法,每个索引输入项指向其相关的数据库行。
如果数据库在寻找记录时先浏览索引,寻找记录将变得更容易而且数据返回得更快。
6)关系:
数据库可以由多个表组成,表与表之间可以用不同的方式相互关联。
例如1.2所示的学生成绩表保存了学生的成绩,这个表中的记录可以通过学生的学号和学生基本情况表中的记录关联起来。
在表1.2中的学号字段引用了表1.1学生基本情况表中的学号字段,从而把学生的基本情况和学生成绩联系起来了。
用来建立关系的键叫做外部键或称为外键,因为它与“外部”表“学生基本情况表”的主键关联。
表1.2学生成绩表
学号
外语
高数
物理
0201
78
69
78
0202
85
87
79
0203
75
78
82
0204
79
89
82
表1.1
库、表、记录和字段间的关系如下图所示:
数
据字段
库
记录
表1111
表
3
表
2
学号外语高数物理
0201786978
0202858779
目前常用的关系型数据库
目前常用的关系型数据库管理系统有:
ORACLE、SYBASE、SQLSERVER、MSSQLSERVER、IBMDB2UDB、INFORMIX等,常用的小型数据库有:
Access、Pradox、Foxpro等,个人用户比较常用的是基于中小型数据库的MSSQLSERVER和Access。
这些数据库的简介见课本
1.1.3VB数据库编程中的术语
1)数据库引擎
数据库引擎存在于程序和物理数据库文件之间,将数据访问对象上的操作转换为对数据库文件自身的物理操作,来处理所有与各种数据库接口的机制。
这使用户与正在访问的特定数据库无关,不管这个数据库是本地的VB数据库,还是所支持的其他任何数据库格式,所使用的数据访问对象和编程技术都是相同的。
Jet数据库引擎被包含在一组动态链接库(DLL)文件中,运行时,这些文件被链结到VB程序。
它把应用程序的请求翻译成对.mdb文件或其他数据仓库的物理操作。
它真正读取、写入和修改数据库,并处理所有内部事务,如索引、锁定、安全性和引用完整性。
它还包含一个查询处理器,接收并执行结构化查询语言(SQL)查询,来实现所需要的数据库操作。
另外还包含一个结果处理器,用来管理查询所返回的结果。
2)数据表(Table)
数据表是一组相关的数据按行列来排列,可以把它想象成行列整齐的表格。
每一行称作一条记录(Record),每一列称作一个字段(Field)。
3)记录(Record)
在表中,每一行就是一条记录,它唯一描述了一个有意义的事物。
一般来说,数据库表的记录创建时任意两行都不能相同。
4)字段(Field)
在表中每一列就是一个字段,它的每一个元素描述了该元素所在行(记录)的某一个方面的性质。
表是有其包含的各种字段定义的,每个字段描述了它所含有的数据。
创建一个数据库时,为每个字段分配一个数据类型、最大长度和其他属性。
字段可包含各种字符、数字甚至图形、声音、动画等多媒体信息。
5)索引(Index)
为了加快访问数据库的速度并提高访问效率,特别赋予数据表中的某一个字段的性质,使得数据表中的记录按照该字段的某种方式排序(升序或降序)。
6)键(Key)
键就是表中的字段(或多个字段),它(们)为快速检索而被索引。
键可以是唯一的,也可以是非唯一的,取决于它(们)是否允许重复。
唯一键可以指定为主键,用来唯一标识表的每行。
7)关系(Relation)
数据库可以由多个表组成,表与表之间可以用不同的方式相互关联。
1.2VB数据库的编程方法
1.2.1VB数据库的组成
VB数据库的组成有三部分:
用户界面、数据库引擎、数据库。
其中数据库引擎存在于用户界面和数据库之间,起中介作用,用户通过它与所要访问的特定数据库联系。
不管这个数据库是本地的VB数据库,还是其所支持的其他任何数据库格式,所使用的数据访问对象和编程技术都是相同的。
1.用户界面
用户界面是进行人机交互的界面,用于显示数据并允许用户查看或更新数据。
驱动用户界面的是VB编写的应用程序代码,这些代码包括用来请求数据库服务的数据访问对象和方法,如添加、删除记录和执行查询等。
由应用程序代码所发出的服务请求是向数据库引擎提出的,而不是直接对物理数据库文件进行操作。
对物理数据库的直接操作由数据库引擎发出,并向应用程序返回所需要的结果。
2.数据库引擎
Jet数据库引擎包含在一组动态连接库(DLL)中。
运行时动态连接库文件被连接到VB程序,他把应用程序的请求翻译成对.mdb文件或其他数据库的物理操作。
Jet数据库引擎被包含在一组动态链接库(DLL)文件中,运行时,这些文件被链结到VB程序。
它把应用程序的请求翻译成对.mdb文件或其他数据仓库的物理操作。
它真正读取、写入和修改数据库,并处理所有内部事务,如索引、锁定、安全性和引用完整性。
它还包含一个查询处理器,接收并执行结构化查询语言(SQL)查询,来实现所需要的数据库操作。
另外还包含一个结果处理器,用来管理查询所返回的结果。
3.数据库
对于本地的VB或MicrosoftAccess数据库来说,就是.mdb文件,对于其他的数据库,则可能包含其他扩展名的文件,例如:
在SQLSERVER7.0中包含称为*.mdf和*.ldf的数据库。
1.2.2VB访问数据库的方法
VB提供了多种访问数据库的方法,VB可以访问的数据库类型有许多种。
另外,还可以通过ODBC访问SQL服务器,以客户/服务器的方式进行数据存取。
VB访问数据库的方法有如下几种:
1)使用可视化数据管理器
2)使用DATA控件
VB工具箱中提供了一个DATA控件,他是VB开发数据库应用程序是最常用的控件之一。
利用他不需要任何编程就可以实现对数据库的访问。
而所要做的工作仅仅是在窗体上添加一个DATA控件和一些用来显示数据的约束控件,并且设置它们的属性。
这是访问已有数据库的最简便的方法,在VB实现的很巧妙。
3)使用DAO访问数据库
DAO(DataAccessObjects,DAO数据访问对象)是一种基于JET数据库引擎的面向对象的接口。
使用DAO进行数据库编程非常简单。
4)使用RDO远程数据对象
RDO(RemoteDataObjects,远程数据对象)为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。
5)使用ADO数据控件
ADODATA控件使用MicrosoftActiveX对象(ADO)来快速建立数据绑定的控件和数据提供者之间的链接,数据提供者可以是任何符合OLEDB规范的数据源。
6)使用ActiveX数据对象
ActiveX数据对象(ADO)是为Microsoft最新的强大的数据访问接口OLEDB而设计的,它是VB支持的三种数据访问接口之一,其它两个分别为DAO和RDO。
OLEDB可以为任何数据源提供高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等。
1.3关系型数据库标准语言SQL
1.3.1SQL语言概述
SQL(StructuredQueryLanguage)语言是1974年由Boyce和Chamberlin提出的。
1986年10月美国国家标准局(AmericanNationalstandardInstitute,简称ANSI)的数据库委员会X3H2批准了SQL作为关系数据库语言的美国标准。
同年公布了SQL标准文本(简称SQL-86)。
1987年国际标准化组织(InternationalOrganizationforStandardization,简称ISO)也通过了这一标准。
此后ANSI不断修改和完善SQL标准,并于1989年公布TSQL-89标准。
1992年又公布了SQL-92标准(也称SQL2)。
目前ANSI的99版本SQL3,也已经发布了。
我国也制定了SQL的国家标准GB12911,它等效于SQL-89版本。
目前关系数据库管理系统都采用SQL语言作为数据库语言,SQL语言成为关系数据库的核心语言。
有方言,支持程度不同。
1.3.2SQL语言功能
1)数据定义(DDL):
定义、删除、修改关系模式(基本表);定义、删除视图(View);定义、删除索引(Index)
2)数据操纵(DML):
数据查询;数据增、删改;
3)数据控制(DCL):
用户访问权限的授予、收回;
⏹数据查询的功能可以理解为使用“动词SELECT”对数据记录或记录集进行查询;
⏹ 数据定义的功能可以理解为使用“动词”对数据库、基本表、视图和索引进行定义;
⏹ 数据操纵的功能可以理解为使用“动词”对数据记录或记录集进行插入、删除和修改操作;
⏹数据控制的功能可以理解为使用“动词”对用户或组进行授予和收回特定权限的控制操作;特定权限包括所有上述功能。
Select查询
数据查询是数据库应用的核心功能,是数据库的核心操作。
SQL语言提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。
数据查询是对己建立的表中的数据进行检索的操作,SELECT语句不会更改数据库的中的数据。
使用SELECT-SQL命令可以选择查询表中的任意列,它至少包括两个句子,其基本形式为:
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC|DESC]];
整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。
如果有GROUP子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一组。
通常会在每组中使用集函数。
如果GROUP子句带有HAVING短语,则只有满足指定条件的组才予以输出,如果有ORDER子句,则结果表还要按<列名2>的值的升序或降序排序。
举例说明
select学生基本情况表.*from学生基本情况表orderby学生基本情况表.学号
本例命令的意义为:
选取所有”学生基本情况表"内的记录及字段,并以"学号"大小,由小到大作排序。
学生基本情况表.*表示所有表中的字段
1.4数据库的建立
数据库的新建包括数据表、库、字段及字段属性的建立。
再此我们将介绍几中创建数据库的方法:
1)使用可视化数据管理器创建数据库
通过VB集成开发环境下的“外接程序”菜单下的“可视化数据管理器”命令,就可以使用VB提供的一个功能强大的数据库访问工具来创建和操纵数据库。
实例导引。
2)使用DAO编程创建数据库
DAO模型是设计关系数据库系统结构的对象类集合。
它提供了管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间关系,定位和查询数据库等工具;由于本方法在创建数据库时较为复杂,故在此不予介绍。
3)使用MicrosoftAccess2000创建数据库
Access是一个数据库管理系统,它之所以被集成到Office中而不是VisualStudio中,是因为它与其它数据库管理系统(如)相比更加简单易学,一个普通的计算机用户即可掌握并使用它。
注意:
在离开Access之前还有一个问题必须解决,就是Access2000与VB6.0的兼容问题,用Access2000创建的数据库不能直接被VB6.0访问,必须经过转化才行以下将给大家介绍如何使用Access2000来创建数据库。
进入Access2000
第二章数据约束控件
为数据识别控件,在数据库中通过它访问有关的数据信息。
第二章数据约束控件
VB提供了一些具有数据感知功能的控件来配合数据约束控件显示记录集中的数据内容,称这些控件为数据绑定控件。
2.1Data控件
定义:
Data控件是数据约束控件;
可与Data控件绑定的内部控件有:
CHeckBox、PictureBox、Label、
TextBox、Image、ListBox、
ComboBox及OLE控件。
2.1.1Data控件的常用属性:
1)Connect属性
该属性设置所要使用的数据库的类型,有Access、Excel等类型;
2) DataBaseName属性
该属性返回或设置数据源的名称和位置;
3) RecordSource属性
该属性设置数据绑定控件的记录的来源。
2.1.2“设置绑定”
所有的数据绑定控件都有两个共同属性:
DataSource和DataField属性
DataSource用来设置数据源;DataField属性设置字段名;
2.1.2“设置绑定”
DataSource属性和DataField属性的设置必须在Data控件的属性设置完成之后进行。
2.1.2“设置绑定”
设置绑定的步骤如下:
1)在窗体上放置Data控件;
2)设置Data控件的Connect、DataBaseName和RecordSource属性;
2.1.2“设置绑定”
3)在窗体上放置数据绑定控件;
4)设置绑定控件的DataSource属性和DataField属性;
5)如果需要多个数据绑定控件,重复步骤3)和4)。
几点注意
1、数据库必须为早期版本的数据库,所以要进行数据库的转换。
2、几个设置步骤缺一不可!
第三章数据访问对象(DAO)
1、Jet数据库引擎
引擎(engine)能够决定程序管理和数据操作的程序或程序段。
数据库引擎就是操作数据库的一段程序或程序段。
MicrosoftJet数据库引擎和数据访问对象DAO(dataaccessobject)可以创建功
能强大的客户/服务器应用程序。
第三章数据访问对象(DAO)
Data控件几乎不需要任何代码,仅通过属性的设置就可以具有访问数据库的能力。
而利用代码增强Data控件的功能,则体现了DAO的部分功能。
实际上,Data控件是在高层次上执行DAO,作为一个高层对象,它封装了操纵Jet所需的编程任务。
本章介绍DAO以及编程技术。
3.1什么是DAO
DAO是数据访问对象(DataAccessObjects)的简称,它包含了很多对象和集合,通过Jet引擎来连接MicrosoftAccess数据库和其他数据库。
3.1什么是DAO
DAO模型为进行数据库编程提供了需要的属性和方法。
利用DAO可以完成对数据库的创建,如创
建表、字段和索引,完成对记录的定位和查询以及对数据库的修改和删除等。
3.2DAO的优缺点
优点:
1)数据访问对象完全在代码中运行,使程序员可以摆脱Data控件的限制,使用代码操纵Jet引擎访问数据库数据,能够开发出更强大更高效的数据库应用程序。
2)使用数据访问对象开发应用程序,使数据访问更有效,同时对数据的控制更灵活更全面,给程序员提供了广阔的发挥空间。
3.2DAO的优缺点
缺点:
数据访问对象的复杂性,使其使用起来更为复杂和抽象,不如使用Data控件简单和直观,可以说,使用DAO需要使用者具备更多的数据库操作知识。
使用时的注意事项
1、在使用DAO之前,必须确保已经引用DAO对象。
如果没有引用,采用
以下操作引用DAO库:
单击“工程”菜单的“引用”选项,出现引用对话框,
选中其中的“MicrosoftDAO3.5ObjectLibrary”项,单击“确定”按钮。
2、DAO也只能访问早期版本的Access数据库,所以应用时要转换。
3.3DAO可以识别的数据库类型
有三种类型:
1)桌面数据库
*.mdb数据库,即我们所讨论的Access数据库;
2)外部数据库
包括dBASEII、MicrosoftFoxProversion2.0等;
3.3DAO可以识别的数据库类型
3)ODBC数据库(开放式数据库连接)
这包括符合ODBC标准的客户/服务器数据库,如MicrosoftSQLServer。
3.4DAO中常用对象的方法和属性
1)WorkSpace(工作区)对象
Workspace对象定义了使用何种方式连接数据库。
在DAO中,可以使用MicrosoftJet引擎或ODBCDirect中的任何一种,视数据源而定,而连接方式的实现,则可以通过Workspace对象来定义。
Workspace对象还提供了事务处理,为保证数据库的完整性提供了支持。
1)WorkSpace(工作区)对象的方法
Opendatabase方法
该方法用于在工作区中打开数据库。
Opendatabase方法
*语法表示为
setdatabase=
workspace.Opendatabase
(dbname,options,readonly,connect)
Opendatabase方法
*参数说明
a)Database参数可选,为工作区的数据库对象变量;
b)Dbname参数,用于指定要打开的数据库文件名或数据库路径名称;
opendatabase方法
C)Options:
参数可选,该参数对于MicrosoftJet工作区,当其值为True时,以独占的方式打开数据库;其值为False(默认)时,以共享方式打开数据库;
Opendatabase方法
d)readonly参数,用于设置是否以只读的方式打开数据库,当设置为True时,以只读方式打开,否则相反,默认为False。
Opendatabase方法
e)Connect参数,用于指定打开数据库的不同连接信息,包括口令等,该参数分为两个部分,数据库类型与其它选项,选项间可以使用分号连接。
Opendatabase方法使用举例
DimdbAsDatabase
Setdb=Workspaces.OpenDatabase("D\student.mdb")
表示在工作区中打开名为stu