第10章 VB与数据库 247 lblLabels(2)
lblLabels(3)
lblLabels(4)
AutoSize Caption AutoSize Caption AutoSize Caption
-1 'True \性别:\-1 'True \民族:\-1 'True \班号:\
本窗体上设计的事件过程如下:
Private Sub cmdAdd_Click() bAdd = True
Adodc1.Recordset.AddNew cmdDelete.Enabled = False cmdFind.Enabled = False cmdUpdate.Enabled = True txtFields(0).SetFocus End Sub
Private Sub cmdDelete_Click()
If MsgBox(\真的要删除当前记录吗\信息提示\ Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveFirst If Adodc1.Recordset.BOF Then cmdDelete.Enabled = False cmdFind.Enabled = False End If End If End If End Sub
Private Sub cmdClose_Click() Unload Me End Sub
Private Sub cmdFind_Click() Dim str As String
Dim mybookmark As Variant
mybookmark = Adodc1.Recordset.Bookmark
str = InputBox(\输入查找表达式,如年龄=9\查找\ If str = \ Adodc1.Recordset.MoveFirst Adodc1.Recordset.Find str
If Adodc1.Recordset.EOF Then
MsgBox \指定的条件没有匹配的记录\信息提示\ Adodc1.Recordset.Bookmark = mybookmark End If End Sub
248 Visual Basic程序设计导学 Private Sub cmdUpdate_Click() Adodc1.Recordset.Update Adodc1.Recordset.MoveLast cmdUpdate.Enabled = False cmdDelete.Enabled = True cmdFind.Enabled = True End Sub
Private Sub Form_Load()
If Adodc1.Recordset.EOF And Adodc1.Recordset.BOF Then cmdFind.Enabled = False cmdDelete.Enabled = False End If
cmdUpdate.Enabled = False Adodc1.Recordset.MoveFirst End Sub
本窗体的运行界面如图10.22所示。
图10.22 ADO Data控件应用例子执行界面
10.6 结构化查询语言(SQL)
结构化查询语言(SQL)是目前各种关系数据库管理系统广泛采用的数据库语言,很多数据库和软件系统都支持SQL或提供SQL语言接口。本节介绍基本的SQL语言,特别是SELECT语句,在以后的数据库编程中会经常用到。
10.6.1 SQL语言的组成
SQL语言包含查询、操纵、定义和控制等几个部分。它们都是通过命令动词分开的,各种语句类型对应的命令动词如下:
· 数据查询的命令动词为SELECT。
· 数据定义的命令动词为CREATE,DROP。
· 数据操纵的命令动词为INSERT,UPDATE,DELETE。
第10章 VB与数据库 249 · 数据控制的命令动词为GRANT,REVOKE。
10.6.2 数据查询语句
SQL的数据查询语句是使用很频繁的语句,其基本格式如下:
SELECT 字段表 FORM 表名 WHERE 查询条件 GROUP BY 分组字段 HAVING 分组条件
ORDER BY 字段[ASC|DESC]
各子句的功能如下:
SELECT:指定要查询的内容。
FORM:指定从其中选定记录的表名。 WHERE:指定所选记录必须满足的条件。 GROUP BY:把选定的记录分成特定的组。 HAVING:说明每个组需要满足的条件。 ORDER BY:按特定的次序将记录排序。
其中,“字段表”内可使用合计函数对记录进行合计,它返回一组记录的单一值,可以使用的合计函数如表10.5所列。“查询条件”由常量、字段名、逻辑运算符、关系运算符等组成,其中的关系运算符如表10.6所列。
表10.5 SQL的合计函数
合计函数 AVG COUNT SUM MAX MIN
说明
返回特定字段中值的平均数 返回选定记录的个数
返回特定字段中所有值的总和 返回特定字段中的最大值 返回特定字段中的最小值
表10.6 关系运算符
符号 < <= > >= = <>
说明 小于 小于等于 大于 大于等于 等于 不等于
250 BETWEEN 值1 AND 值2 IN LIKE*
Visual Basic程序设计导学 在两值之间
(一组值) 在一组值中 与一个通配符匹配
* 通配符可使用“?”代表一个字符位,“*”代表零个或多个字符位。
10.6.3 使用SQL
下面我们通过几个例子说明SQL的基本使用方法。
在程序运行时,可以通过使用SQL语句设置Data控件的RecordSource属性,这样可以建立与Data控件相关联的数据集。使用SQL语句的查询功能不影响数据库中的任何数据,只是在数据库中检索符合某种条件的数据记录。
【例10.1】 以下SQL语句用于建立一个学生表。
CREATE TABLE 学生表 (学号 CHAR(5), 姓名 CHAR(10), 性别 CHAR(2), 民族 CHAR(12), 班号 CHAR(5));
【例10.2】 Data1.RecordSource=\学生表\语句的作用是将学生表的所有记录挑选出来作为Data1控件的记录集。
【例10.3】 Data1.RecordSource=\学号,姓名,班号FROM学生表\语句的作用是将学生表的学号、姓名和班号三列的所有记录都挑选出来作为Data1控件的记录集。
【例10.4】 Data1.RecordSource=\学号,姓名,班号FROM学生表WHERE性别='男'\语句的作用是将学生表中所有男学生的学号、姓名和班号三列挑选出来作为Data1控件的记录集。
10.7 习题10
10.1 在VB中可以访问哪些类型的数据库? 10.2 VB访问数据库有哪几种不同的方法?
10.3 如何在记录集内移动、定位、编辑、删除和添加数据?
10.4 利用Data控件说明如何将一个表中的字段绑定到一个文本框中? 10.5 简述将ADO控件连接到数据源的步骤。
10.6 简述ADO控件和Data控件及其数据绑定成员的主要区别。
10.7 采用Data控件实现对student.mdb数据库的学生表(其结构见图10.6)的数据操作,其执行界面如图10.23所示。
第10章 VB与数据库 251
图10.23 对学生表执行的数据操作界面
10.8 有一个学生成绩表,其结构如下:
学号 Integer 姓名 Text 8 数学 Single 语文 Single 英语 Single
使用ADO Data控件实现对其记录进行添加、编辑和删除功能。执行界面如图10.24所示。
图10.24 对学生表执行添加、编辑、删除操作