Download presentation
Presentation is loading. Please wait.
1
第13章 数据库的基本应用 Visual Basic 程序设计教程
2
第12章我们介绍了文件的基本操作,实际上使用数据库来存储和管理数据将比文件操作有更高的效率。VB具有了强大的数据库操作功能,使程序开发人员可以轻松地开发出各种数据库应用程序。
Visual Basic程序设计教程
3
本章介绍: 数据库的基本概念 VB可视化数据库管理器的用法 VB操作数据库的两种工具 DATA数据控件 ADO数据对象 显示数据的基本方法。
Visual Basic程序设计教程
4
13.1 概述 关系数据库 1. 数据库和数据表 数据库(DateBse)是许多相关数据根据一定的原则构成的数据集合。一个数据库由一个或多个数据表(Table)组成。 数据表中的一列称为一个字段或域(Field),表中的一行数据称为一条记录(Record)。 同一个表中字段名不允许重名 表中同一字段的数据类型相同 所有记录具有同样的字段 Visual Basic程序设计教程
5
学生基本情况表 Visual Basic程序设计教程
6
可视化数据管理器 2. VB可访问的数据库 VB默认的数据库格式与Access格式相同,其默认的数据库文件(.mdb)称为内部数据库。 除此之外,在VB中还可以访问: 外部数据库,如dBASE、FoxPro、Paradox等ISAM(索引顺序访问方法)数据库,以及Lotus123和Excel等电子表格数据列表 ODBC(开放式数据互接)数据库,如SQLServer等 Visual Basic程序设计教程
7
可视化数据管理器是VB提供的一个数据库操作的实用工具,使用它可以方便地建立数据库,并对数据表的记录进行增加、删除、修改及查询。VB默认的数据库是Access,扩展名是.mdb。
Visual Basic程序设计教程
8
在VB IDE中,打开“外接程序”菜单的“可视化数据管理器”命令,即打开可视 化数据管理器的“VisData”窗口,如图所示。
1.启动可视化数据管理器图 在VB IDE中,打开“外接程序”菜单的“可视化数据管理器”命令,即打开可视 化数据管理器的“VisData”窗口,如图所示。 Visual Basic程序设计教程
9
建立数据库→新建数据表→确定数据表的字段以及字段名、类型和长度等信息
2. 建立数据库的表结构 建立数据库→新建数据表→确定数据表的字段以及字段名、类型和长度等信息 【例】 建立一个学生.mdb数据库,在该库中新建一个名为学生基本情况表的数据表。 字段名 学号 姓名 性别 出生日期 籍贯 专业 类型 Text Data/Time 长度 7 8 2 10 20 操作步骤:建立数据库→新建数据表→建立表索引(可选) →生成表 Visual Basic程序设计教程
10
3. 修改表结构 “数据库窗口”快捷菜单中“设计”命令 4. 输入、编辑、删除记录 在“数据库窗口”中双击数据表
Visual Basic程序设计教程
11
使用SQL语句 结构化查询语言(SQL)是一种操作关系数据库的工业标准语言。SQL由一系列SQL语句组成。用户可以在“SQL语句”窗口中输入SQL语句,也可以在程序中使用SQL语句中来实现各种功能。下面介绍SQL的基本语句。 Visual Basic程序设计教程
12
SELECT语句可以从一个或多个表中选取特定的行和列。该语句基本格式如下:
SELECT 字段名列表 From 表名 [Where 查询条件] [Order By 排序字段[ASC|DESC],…] 【例】: ELECT 学号,姓名,性别 From 学生基本情况表 Where 专业="计算机应用" SELECT * From 学生基本情况表 Where 性别="女" Order By 专业 Visual Basic程序设计教程
13
Insert语句用于向数据表中追加一条记录。语句格式如下:
Insert Into 表名(字段列表) Values(字段值表) 例如 Insert Into 学生成绩表(学号,英语,程序设计) Values(" ",85,88) Visual Basic程序设计教程
14
Delete语句用于删除指定条件的记录。语句格式如下: Delete From表名 Where条件
例如 Delete From 学生成绩表 Where 学号=" " Visual Basic程序设计教程
15
Update语句用于修改指定条件的记录。 语句格式如下:
Update 表名 Set 字段=表达式[,字段=表达式,……] Where 条件 例如,修改学生基本情况表中学号为“ ”的专业,可使用的Update语句如下: Update 学生基本情况表 Set 专业="计算机应用" Where 学=" " Visual Basic程序设计教程
16
【例13-1】修改例11-1程序,用数据库方法进行用户名和密码验证。界面如图所示, frmlogin窗体中添加了一个Data控件。
13.2 使用数据库方式验证用户名和密码登录程序 Visual Basic程序设计教程
17
建立管理员表,在管理员表中添加记录。 Data控件属性设置 Visual Basic程序设计教程 属性 属性值 说明 名称 Data1
Connect Access 连接数据库类型 DatabaseName 学生.mdb 数据库名称 Visible False 不可见 Visual Basic程序设计教程
18
Visual Basic程序设计教程 Dim Sql As string
Private Sub cmdOK_Click() Dim Sql As string Sql = "select * from 管理员表 where 用户名='" + UserName.Text + "'" Sql = Sql + " and 密码='" + Password.Text + "'" Data1.RecordSource = Sql '用Sql语句返回记录集 Data1.Refresh '刷新数据库 If Not Data1.Recordset.EOF And nPass < 3 Then '在数据库中找到了对应的用户名和密码 frmLogin.Hide frmmain.Show Else End If End Sub Visual Basic程序设计教程
19
13.3 使用Data控件访问数据库 1. 窗体上添加Data控件 2. 三个重要属性
Connect:指定所连接的数据库类型,默认为Access DatabaseName:选择要访问的数据库文件 RecordSource:确定要访问的数据来源(数据表或SQL查询语句) 3. 其它常用属性 RecordSetType:设置记录集的类型 ReadOnly:设置是否以只读方式打开数据库 Visual Basic程序设计教程
20
Data控件的常用属性 程序运行时,根据Data控件设置的属性打开数据库,返回一个记录集对象(RecordSet),RecordSet对象提供和物理数据库相应的一组逻辑记录。Data控件对数据的操作主要是对RecordSet对象进行的,RecordSet对象也有自己的属性和方法。 Visual Basic程序设计教程
21
Visual Basic程序设计教程 属性 说明 BOF 记录指针是否指向RecordSet对象第一条记录之前 EOF
RecordCount 返回RecordSet对象的记录的个数 AbsolutePosition 返回当前记录的记录号。取值范围从0开始,到RecordCount-1。 NoMatch 用Find查询方法在表中查询满足某一条件的记录,如果未找到符合条件的记录,则该属性值为True,否则值为False。 Fields 记录集中的字段,Fields(i)表示当前记录的第i个字段,i从0开始;Fields("字段名")表示当前记录的指定字段 Visual Basic程序设计教程
22
13.3.2 Data控件和RecordSet对象的常用方法 1.Data控件的常用方法 (1)Refresh方法
在程序运行中,如改变了Data控件的Connect、DatabaseName、RecordSource或ReadOnly等属性的值,则必须调用Refresh方法,使所作的更改生效。 Visual Basic程序设计教程
23
格式:Data控件名.UpdateRecord
Visual Basic程序设计教程
24
格式:Data控件名.RecordSet.方法名 功能:在记录集上前后移动以改变当前记录。其中方法有:
(1)记录的定位方法 格式:Data控件名.RecordSet.方法名 功能:在记录集上前后移动以改变当前记录。其中方法有: MoveFirst:将记录指针定位到第一条记录。 MoveLast:将记录指针定位到最后一条记录。 Visual Basic程序设计教程
25
MoveNext:将记录指针定位到下一条记录。 MovePrevious: 将记录指针定位到上一条记录。 (2)Update方法
格式:Data控件名.RecordSet.Update 功能:更新记录内容。通常在调用了Addnew方法后,调用该方法。 Visual Basic程序设计教程
26
格式:Data控件名.RecordSet.AddNew
功能:添加一条新的空白记录。用户可以给当前记录的各字段赋值,然后调用Update方法对数据表更新,否则用AddNew方法添加的记录无效。例如: Data1.RecordSet.AddNew Data1.RecordSet.Fields(0)="王刚" …… Data1.RecordSet.Update Visual Basic程序设计教程
27
格式:Data控件名.RecordSet.Delete
功能:删除当前记录。使用该方法删除一条记录后,需用MoveNext方法将记录指针移到下一条记录。 Visual Basic程序设计教程
28
(5)Edit方法 格式:Data控件名.RecordSet.Edit
功能:将当前记录的内容进行修改之前,使用Edit方法使记录处于编辑状态。与Addnew方法类似,必须再调用Update或UpdateRecord方法来更新,才使用所作的修改生效。 Visual Basic程序设计教程
29
格式:Data控件名.RecordSet.方法名
(6)记录的查询方法 格式:Data控件名.RecordSet.方法名 功能:在记录集中查询满足条件的记录。如果找到满足条件的记录,则记录指针将定位在找到的记录上。如果找不到满足条件的记录,则记录指针将定位记录集的末尾。其中方法有: FindFirst:查询满足条件的第一条记录。 FindLast:查询满足条件的最后一条记录。 FindNext:从当前记录开始往后查找满足条件的第一条记录。 FindPrevious:从当前记录开始往前查找满足条件的第一条记录。 Visual Basic程序设计教程
30
通常可以使用Find方法查找某字段的值与一表达式的值相匹配的记录,通过NoMatch属性判断是否找到。例如,在“学生基本情况表”中,查找第一条姓名为“王东”的记录,可以用如下的语句:
Data1.Recordset.FindFirst "姓名='王东'" If Data1.Recordset.NoMatch Then MsgBox "数据表中没有符合条件的记录!" End If Visual Basic程序设计教程
31
13.3.3 Data控件的常用事件 1.Validate事件
在一条不同的记录成为当前记录之前,Update 方法之前,或者Delete、Unload 或 Close 操作之前会引发该事件。即将记录指针从X记录移到Y记录时,引发该事件。引发该事件时,当前记录仍为X记录。 Validate事件过程的格式为: Private Sub Data1_Validate (Action As Integer, Save As Integer) Visual Basic程序设计教程
32
在一条记录成为当前记录之后引发该事件。即将记录指针从X记录移到Y记录时,引发该事件。引发此事件时,当前记录是Y记录。
其中,Action参数用来标识引发该事件的操作。借用该参数可以根据不同的操作作不同的处理。Save参数是一个布尔表达式,用来表示是否保存已修改的数据。如果该事件退出时 save 为 True,则激活 Edit 和 UpdateRecord 方法。 2.Reposition事件 在一条记录成为当前记录之后引发该事件。即将记录指针从X记录移到Y记录时,引发该事件。引发此事件时,当前记录是Y记录。 Visual Basic程序设计教程
33
13.4 数据绑定控件介绍 绑定:通过对普通控件的属性设置,使得这些控件与Data控件记录集中的字段建立链接关系。 1. Data的绑定控件
13.4 数据绑定控件介绍 绑定:通过对普通控件的属性设置,使得这些控件与Data控件记录集中的字段建立链接关系。 1. Data的绑定控件 具有DataSource和DataField属性的控件可以和Data控件进行绑定,如标签、文本框等。 2. 绑定控件的属性设置 DataSource:选择所绑定的Data控件 DataField:确定需显示或更新的数据表字段,即Data控件连接的数据表字段 Visual Basic程序设计教程
34
【例13-2】设计一个程序,管理“学生. mdb”数据库中“学生基本情况表”的记录的内容,此数据表中的记录如表13
Visual Basic程序设计教程
35
分析:程序运行时要显示如图的界面,相应文本框需要分别绑定到数据控件,同时由于文本框控件已绑定,文本框中任何数据的修改都会直接改变数据库中的数据,因此需要对已更改的数据作出判断,这一过程可以通过Data控件的Validate事件完成。另外,通过Data控件的Reposition事件设置它的Caption属性。数据控件Data1和文本框的属性设置如表13.9所示。 Visual Basic程序设计教程
36
Visual Basic程序设计教程 对象 属性 属性值 Data1 Connect Access DatabaseName
学生数据库所在路径及名称(学生.mdb) RecordSource 学生基本情况表 Text1~Text6 DataSource DataField 分别为:学号、专业、姓名、性别和籍贯 Visual Basic程序设计教程
37
13.5 使用ADO控件访问数据库 ADO:ActiveX Data Objects(ActiveX数据对象) 创建ADO控件
(1) “工程”→部件” (2) 点击工具箱中, 在窗体上画出ADO对象 13.5 使用ADO控件访问数据库 Visual Basic程序设计教程
38
设置窗体上ADO对象的ConnectionString属性
Visual Basic程序设计教程
39
Visual Basic程序设计教程
40
选择数据表为记录源 由SQL查询来确定记录源
设置窗体上ADO对象的RecordSource属性 选择数据表为记录源 由SQL查询来确定记录源 Visual Basic程序设计教程
41
ADO控件与Data控件类似,对数据的操作主要通过Recordset对象的方法来实现。
ADO控件提供可响应的事件较多,常用的是WillMove事件和MoveComplete事件。当用某种方法改变纪录集的指针使其从一条记录移到另一条记录,产生WillMove事件。当一条记录成为当前记录后,产生MoveComplete事件,它在WillMove事件之后发生。 Visual Basic程序设计教程
42
13.6 使用DataGrid浏览数据库 DataGrid控件与ADO控件绑定后,可一次显示多条记录,并允许对显示的记录进行编辑修改,并可将修改的结果自动更新到数据库中。 使用DataGrid控件: (1) “工程”→部件” (2) 点击工具箱中 (3) 在窗体上画出 DataGrid对象 Visual Basic程序设计教程
43
【例13-3】用DataGrid控件显示学生基本情况表中的数据,界面如图所示
Visual Basic程序设计教程
44
【操作步骤】 在窗体上放置一个ADO控件和一个DataGrid控件,设置ADO控件与数据库的连接,设置DataGrid控件的DataSource属性为Adodc1,运行程序后就可以在DataGrid控件中显示学生基本情况表中的所有数据。 Visual Basic程序设计教程
45
事务(Transaction)是数据库系统中的一个非常重要的概念。简单地说,一组对数据库的操作组成一个事务被提交执行,那么事务处理就必须做到:要么整个操作都成功,要么什么操作都不做。
数据库本身肩负着管理事务的责任。只要应用程序指定了某段程序为一个事务并做了相应的处理(提交或回退),数据库系统会自动维护事务本身的特性。 13.7 事务处理 Visual Basic程序设计教程
46
VB以BeginTrans、CommitTran和RollbackTrans过程的形式提供了事务处理机制。BeginTrans开始记录对数据库的更新,用于以后可能的恢复。BeginTrans调用可以嵌套5层。激活CommitTrans,实现从最近的BeginTrans开始的所有改变。对于嵌套事务,直到关闭了所有事务记录后才执行更新。激活RollbackTrans可以取消从最近调用BeginTrans开始所做的所有改变。 Visual Basic程序设计教程
47
13.8 程序举例 【13-4】利用ADO控件和DataGrid控件,设计成绩查询程序,界面如图13-15所示。界面中包含一个ADO控件、一个DataGrid控件、一个标签、一个文本框和两个命令按钮,命令按钮采用控件数组形式。 Visual Basic程序设计教程
Similar presentations