飞豆解说韩服更新:[基础教程]第九章 VB的数据库操作1

来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 02:51:27
2007-05-10 21:17:26|  分类:VB相关 |  标签:vb   |字号大中小
第九章 VB的数据库操作
9.1    数据库的基础知识
1.计算机数据管理技术的发展
第一阶段:人工管理阶段,特点是数据不长期保存,没有软件系统对数据进行管理,没有文件的概念,一组数据对应一个程序。
第二阶段:采用文件管理方式,特点是数据不再是程序的组成部分,而是有组织、有结构地构成文件形式,形成数据文件;文件管理系统是应用程序与数据文件的接口。
第三阶段:数据库管理方式,特点是对所有数据实行统一、集中、独立的管理,数据独立于程序存在,并可以提供给各类不同用户使用。
2.数据库的基本概念
(1)   数据库(DataBase  DB)
定义:是以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。
特点:
b 具有最小的冗余度
具有数据独立性
实现数据共享
安全可靠,保密性能好
(2)  数据库管理系统(DataBase Management System  DBMS)
定义:是操纵和管理数据库的系统软件。
功能:维护数据库、接收和完成用户程序或命令提出的访问数据库的各种请求。
数据语言:z v数据定义语言(DDL): 用来建立所需的数据库(即设计库结构)
数据操作语言(DML): 用来对数据库进行查询和维护操作。
t数据控制语言(DCL): 用来控制数据的访问权限及事务管理。
关系型数据库使用的标准语言是结构化查询语言(Structured Query Language, SQL)。
(3)  数据库系统(DataBase System  DBS)
定义; 以数据库应用为基础的计算机系统。
组成:一个完整的数据库系统由数据库、数据库管理系统、数据库管理员和应用程序组成。
数据库也可以这样划分其组成: 硬件:计算机硬件设备
软件:数据库管理系统 、操作系统、开发工具、应用程序
用户:应用程序设计员、终端用户、数据库管理员
分类 层次型数据库
网状型数据库
网状型数据库
分代 第一代  非关系型数据库系统,60年代末问世,包括层次型和网状型
第二代  关系型数据库系统(RDBS),70年代中期问世
第三代  对象-关系数据库系统(ORDBS 、OOBDS),80年代中期至今
上述三个概念之间的联系:在数据库系统中通过数据库管理系统来建立和使用数据库。
3.数据模型
数据模型:即描述实体模型的数据。
数据模型的分类: 层次模型(采用树型结构)
网络模型(采用无向图型结构)
关系模型(采用二维表结构)
关系模型的性质:
二维表的记录数随数据的增加而改变,但其字段数是相对固定的
二维表中的每一列均有唯一的字段名
二维表中不允许出现完全相同的两行
二维表中行的顺序、列的顺序均可以任意交换
4. 关系型数据库的基本结构
关系型数据库的基本结构是一张二维表,包括以下概念:
(1) 记录(Record):数据表中的每一行数据
(2) 字段(Field):数据表中的每一列,表头(第一行)的内容为字段名
(3) 数据表(Table):相关数据组成的二维表格
(4) 数据库(Database):相关数据表的集合
(5) 关系(Relation):相关表之间通过相关联的字段建立的联系。
(6) 索引(Index):指按表文件中某个关键字段或表达式建立记录的逻辑顺序。它是由一系列记录号组成的一个列表,目的是提供对数据的快速访问。索引不改变表中记录的物理顺序。
索引关键字(索引表达式):用来建立索引的一个字段或字段表达式。
ngf  数据库和数据表可以通过数据库管理系统软件来建立,如:Access,Visual FoxPro,SQL Server 、Sybase、 Oracle。在VB环境下可以直接建立Access数据库。
关系型数据表的特点:(1)每一个字段不可再分解,也不能有名字相同的字段;
hgfhgfyh(2)每一列中的数据都有相同的数据类型;
hfyftytfyyy(3)表中没有内容完全相同的行(记录)。
5.查询的概念
查询(query):从相关数据表中选取符合特定要求的数据。
创建方法:可以通过查询生成器创建一个查询,也可以在SQL窗口直接用SELECT—SQL命令写出查询。
9.2    数据库管理器
1.  数据库管理器介绍
在VB中可以通过“外接程序”菜单中的“可视化数据管理器”调出“VisData”数据库管理器窗口。
菜单选项
功能描述
文件
打开数据库
打开指定的数据库
新建
根据所选类型建立新数据库
导入/导出
从其他数据库导入数据表,或导出数据表及SQL查询结果
工作空间
显示注册对话框注册新工作空间,用新输入的用户名和密码从新的工作空间重新打开当前数据库。
压缩MDB
压缩指定的Access数据库,创建一个加密或解密文件。
修复MDB
修复指定的Access数据库
实用程序
查询生成器
建立、查看、执行和存储SQL查询
数据窗口设计器
创建数据窗体并将其添加到VB工程中
全局替换
创建SQL表达式并更新所选数据表中满足条件的记录
附加
显示当前Access数据库中所有附加数据表及连接条件
用户组/用户
查看和修改用户组、用户、权限等设置
System.mda
创建System.mda文件,以便为每个文件设置安全机制
性能选项
设置超时值
2. 建立数据库
数据库的基本操作: 创建数据表:
设计表名和表结构
输入记录
建立索引
数据维护:
增加记录
修改记录
删除记录
创建数据表的主要步骤: 设计表结构 → 输入记录 → 建立索引 → 数据维护
(1)设计表结构
启动可视化数据管理器 → 在database窗口中右击,从菜单中选择“新表” → 在表结构窗口中输入表名→ 添加字段 → 确定字段名称和属性、有效性规则 → 建立索引 →生成表结构。
“添加字段”对话框各选项说明
选项名
描述
名称
即每个字段的名字(对所用字符没有什么限制)
类型
指该字段的数据特征,包括:Boolean、Byte、Integer、Long、Currency、Single、Double、Date/Time、Text、Binary(二进制型,存放图片)、Memo(备注型,存放长文本)
大小
字段宽度,指该字段所能容纳数据的的最大字节数
固定字段
字段宽度固定不变
可变字段
字段宽度可变
允许零长度
表示空字符串可作为有效的字段值
必要的
表示该字段值不可缺少
顺序位置
字段在表中的顺序位置
验证文本
当向表中输入无效值时系统显示的提示信息
验证规则
验证输入字段值的简单规则,目的是使所输数据符合设定的条件
默认值
在输入时设置的字段初始值,以减少输入重复性数据时的工作量
(2)输入记录
在database窗口中选中表名并右击,从菜单中选择“打开” →在数据表窗口输入记录(注意窗口样式)→ 单击“新增”→ 在窗口中输入记录并“更新” →重复……
(3)  维护记录
在database窗口中选中表名并右击,从菜单中选择“打开” →单击“编辑”/“删除”/“新增”,即可完成对记录的修改、删除、添加操作。
3.  建立查询
建立查询就是在数据表中找到符合特定条件的记录并组成一张新表。
在database窗口中选中表名并右击,从菜单中选择“新查询” →在查询生成器中构造查询条件→单击“运行” →单击“保存”,给出查询结果文件名→“关闭”。
查询生成器说明
各选项
描述
查询表达式
设置查询应该满足的基本条件,可以用and /or来设置应满足的多个条件
表/字段名
设置查询结果中将显示的字段名,单击一个加亮便选中了
前百分之几条
只显示查询结果中的前若干条记录
前N条记录
只显示查询结果中的前N条记录
“运行”按钮
执行查询命令,并显示出查询结果
“显示”按钮
用消息框显示SQL命令
“复制”按钮
将SQL命令复制到SQL窗口
“保存”按钮
将查询结果取个名并保存到数据库中
“清除”按钮
清除条件列表框中的查询条件
分组条件
将查询结果分组,一般每组只有一个记录
排序条件
将查询结果按顺序显示出来,ASC(升序)、DESC(降序)
连接条件
设置相关表之间的连接字段
9.3    数据控件
1. 数据控件的建立
从VB工具箱中单击Data控件,在窗体上画出数据控件即可。
2. 数据控件的属性
属性名称
作用
Connect
指定数据控件所要连接的数据库类型,VB默认的是Access的MDB数据库,也可以连接DBF、XLS、ODBC等数据库
DatabaseName
指定具体使用的数据库文件名,包括路径名
RecordSource
指定具体可访问的数据,这些数据构成记录集对象Recordset对象,可以是数据库中的单个表名、一个存储查询,也可以是SQL查询命令
RecordsetType
确定记录集类型,有三种: 0——Table(表); 1——Dynaset(动态,默认的) ;2——Snapshot(快照)
BofAction
当记录指针指向记录集的开始时,确定数据控件该采取的操作:
0——控件重定位到第一个记录
1——移过记录集开始位,定位到一个无效记录,触发数据控件对第一个记录的无效事件Validate
EofAction
当记录指针指向记录集的结束时,确定数据控件该采取的操作:
0——控件重定位到最后一个记录
1——移过记录集结束位,定位到一个无效记录,触发数据控件对最后一个记录的无效事件Validate
2——向记录集加入新的空记录,可以对新记录进行编辑,移动记录指针新记录写入数据库
绑定控件、数据控件、数据库之间的关系:
绑定控件的属性:
DataSource——通过一个有效的数据控件连接到一个数据库上。
DataField——将数据库中的有效字段连接到绑定控件上。
除了常规控件外,可以与Data数据控件绑定的控件有:
控件名称
部件名称
常用属性
MSFlexGrid
Microsoft  FlexGrid Control 6.0(OLE DB)
DataSourse
DBCombo
Microsoft Data Bound List Controls 6.0
DataField、DataSource、ListField、RowSource、BoundColumn
DBList
DBGrid
Microsoft Data Bound Grid Control 5.0(SP3)
DataSourse
3.   数据控件的事件
事件名称
触发时间
Reposition
发生在一条记录成为当前记录后。只要将记录指针从一条记录移动到另一条记录就会触发。
Validate
在一条不同的记录成为当前记录之前,Update 方法之前(用 UpdateRecord 方法保存数据时除外);以及 Delete、Unload 或 Close 操作之前会发生该事件。它检查被数据控件绑定的控件内的数据是否发生变化。
语法:Private Sub Data_Validate(Action As Integer, Save As Integer) …… End Sub
Validate事迹的 Action参数
Action值
描述
Action值
描述
0
取消对数据控件的操作
6
Update 操作
1
MoveFirst 方法
7
Delete 方法
2
MovePrevious 方法
8
Find 方法
3
MoveNext 方法
9
设置Bookmark 属性
4
MoveLast 方法。
10
Close 的方法
5
AddNew 方法
11
卸载窗体
4.  数据控件的常用方法
方法名称
作用
示例
Refresh
激活数据控件,使各用户对数据库的操作有效。
Data1.Refresh
UpdateControls
将数据从数据库中重新读到数据控件绑定的控件内,通过它可以终止用户对绑定控件内数据的修改。
放弃修改按钮代码:
Data1. UpdateControls
UpdateRecord
强制数据控件将绑定控件内的数据写入到数据库中,不再触发Validate事件
确认修改按钮代码:
Data1. UpdateRecord
5. 记录集的属性与方法
名称
作用
属性
AbsolutePostion
返回当前指针值,如果是第一条记录,其值为0;是只读属性
Bof / Eof
Bof判断记录指针是否在首记录之前,若是则为True;Eof判断记录指针是否在末记录之后,若是则为True
Bookmark
用于设置或返回当前指针的标签,可以用在在程序中重定位记录集的指针,其值采用字符串类型。
NoMatch
在记录集中进行查找时,如果找到相匹配的记录,则为Falue,找不到则为True。
RecordCount
对Recordset对象中的记录记数,为了准确起见,在记数前用MoveLast方法将记录指针移到最后一条记录上;是只读属性。
方法
Move
用于移动记录指针,共有5种方法:
MoveFirst——将指针移到第1条记录
MoveLast——将指针移到最后一条记录
MoveNext——将指针移到下一条记录
MovePrevious——将指针移到上一条记录
Move  n——将指针向前或向后移动n条记录
Find
在指定的Dynaset或 Snapshop类型的Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录,共有4种方法:
FindFirst——从记录集的开始查找满足条件的第1条记录
FindLast——从记录集的尾部向前查找满足条件的第1条记录
FindNext——从当前记录开始查找满足条件的下一条记录
FindPrevious——从当前记录开始查找满足条件的上一条记录
语法格式举例:
Data1.Recordset.FindFirst "课程名='计算机基础' "
Find方法支持通配符,默认情况下忽略大小写,可以添加说明改变默认设置: Option Compare Text (与大小写无关)
Option Compare Binary (与大小写有关)
如果找不到相匹配的记录,当前记录保持在查找的始发处;如果找到了,则指针定位到该记录。
Seek
使用该方法必需打开表的索引,它在Table表中查找与指定索引规则相符的第一条记录,并使其成为当前记录。
语法格式举例:
Data1.Recordset.Index= "课程名"
Data1.Recordset.Seek "=", "计算机基础"
6. 利用数据控件对数据库进行增、删、改操作
操作项目
操作方法
注意事项
增加记录
1) 调用AddNew方法:Data1.Recordset. AddNew
2) 给各字段赋值:Recordset.Fields("字段名")=值或在绑定控件中直接输入内容
3) 调用Update方法,将缓冲区内的数据写入数据库:
Data1.Recordset. Update
4) 调用MoveLast方法显示新记录:
Data1.Recordset. MoveLast
如果缺少第3)步而将指针移动到其他记录或关闭了记录,则所做的输入全部丢失;若没有第4)步。虽然加入了新记录,但记录指针自动返回到添加新记录前的位置上,并不显示新记录。
删除记录
1)    定位被删除记录使之成为当前记录(用Move或Find方法)
2)    调用Delete方法:Data1.Recordset. Delete
3)    调用MoveNext方法移动记录指针
使用Delete方法时,当前记录立即删除,但被数据库约束的绑定控件仍旧显示该记录的内容,故必须用第3)步刷新绑定控件。
修改记录
1) 调用Edit方法:Data1.Recordset. Edit
2) 给各字段赋值:在绑定控件中直接修改
3) 调用Update方法,确定所做的修改:
Data1.Recordset. Update
如果要放弃对数据的所有修改,可在第3)步之前用Refresh方法,重读数据库,刷新记录。