19.1 VB 开发数据库概述 19.2 数据库访问控件的应用 19.3 数据绑定控件的应用...

141
1 19.1 VB 开开开开开开开 19.2 开开开开开开开开开开 19.3 开开开开开开开开开 19.4 开 ADO Data 开开开开开 SQL 开开开开开开 19.5 开开 ADO 开开开开开开开开开

description

授课 19 :数据库编程技术. 19.1 VB 开发数据库概述 19.2 数据库访问控件的应用 19.3 数据绑定控件的应用 19.4 在 ADO Data 控件中使用 SQL 语句进行查询 19.5 通过 ADO 编程模型访问数据库. 任务: ” 学生信息管理系统各模块功能实现 ”. 该”学生信息管理系统”程序的主要功能如下: 学籍管理:包括基本学籍信息的输入、修改和查询。 课程管理:包括课程信息的输入和修改。 成绩管理:包括成绩信息的输入、修改和查询。 用户管理:包括添加用户、删除用户、设置权限和修改密码。 考勤管理:包括考勤记录的输入、修改和查询。 - PowerPoint PPT Presentation

Transcript of 19.1 VB 开发数据库概述 19.2 数据库访问控件的应用 19.3 数据绑定控件的应用...

Page 1: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

1

19.1 VB 开发数据库概述19.2 数据库访问控件的应用19.3 数据绑定控件的应用19.4 在 ADO Data 控件中使用 SQL 语句进行查询19.5 通过 ADO 编程模型访问数据库

Page 2: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

2

任务: ” 学生信息管理系统各模块功能实现” 该”学生信息管理系统”程序的主要功能如下: 学籍管理:包括基本学籍信息的输入、修改和查询。 课程管理:包括课程信息的输入和修改。 成绩管理:包括成绩信息的输入、修改和查询。 用户管理:包括添加用户、删除用户、设置权限和

修改密码。 考勤管理:包括考勤记录的输入、修改和查询。 宿舍管理:包括宿舍信息的输入、修改和查询。 系统功能模块如图图 19-1 所示。

Page 3: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

3

学生信息管理系统

学籍管理

添加学籍信息

修改学籍信息

查询学籍信息

添加课程

课程管理

修改课程

成绩管理

输入成绩

修改成绩

查询成绩

用户管理

添加用户

删除用户

修改密码

更改权限

图 19-1

Page 4: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

4

” 学生信息管理系统”设计思路

VB 可以访问任何主流数据库。 ADO 是目前应用范围最广的数据访问接口,在 VB 中可以非常方便地使用 ADO 数据控件和 ADO 编程模型访问各种类型的数据库。本系统采用 VB+ADO+SQL 的设计思路和方法,来具体实现各种学生信息管理系统的功能。

Page 5: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

5

19.1.1 VB 开发数据库概述19.1.1VB 数据库开发功能概述 VB 是微软公司发布的应用程序开发工具,不但具有强大的

程序设计能力,还具有强大的数据库编程能力。1. VB6.0 数据库编程的特征 VB 处理的数据库属于关系类型数据库,由不同层次的对象

组成。一个数据库由多个表组成,每个表包含若干字段。 支持 ADO 存取模式,即 ActiveX Data Object 具有管理和显示数据源的数据控件和数据绑定控件。数据控

件用于与数据库连接,数据绑定控件用于显示数据表的记录。 提供报表设计工具,能够快速生成报表 提供了使用和配置连接的工具与命令,及进行 ODBC 开发

的 API 函数。

Page 6: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

6

19.1.2 VB6.0 支持的数据库种类 数据库编程语言一般都有自己特定格式的数据库。

VB 默认的数据库格式与 Microsoft Access 格式相同 .

可以对其它多种格式的数据库进行操作和处理。 VB 支持的数据库有以下三类: VB 本地数据库,与 Microsoft Access 格式相同。

外部数据库,如 dbase , Microsoft FoxPro 等。 ODBC 数据库,支持符合 ODBC 标准的客户 -

服务器数据库,如 : Microsoft SQL Server , Oracle 等。

Page 7: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

7

ODBC 体系结构

ODBC 数据库应用程序驱动程序管理器

SQLServer驱动程序

Oracle驱动程序

Foxpro驱动程序

Sybase驱动程序

SQLServer数据源

Oracle数据源

Foxpro数据源

Sybase数据源

DB DB DB DB

主要任务包括:建立与数据源的连接、向数据源发送 SQL 请求、接收并处理请求的结果、断开与数据源的连接等

主要作用是用来装载 ODBC 驱动程序、管理数据源、检查 ODBC参数的合法性

Page 8: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

8

ODBC 数据库应用程序驱动程序管理器

SQLServer驱动程序

Oracle驱动程序

Foxpro驱动程序

Sybase驱动程序

SQLServer数据源

Oracle数据源

Foxpro数据源

Sybase数据源

DB DB DB DB

ODBC 应用程序不能直接存取数据库,它将所要执行的操作提交给数据库驱动程序,

通过针对不同数据源的驱动程序实现对不同数据源的各种操作ODBC 驱动程序是一个动态链接库 (DLL) ,

类似于 Windows 下的打印驱动程序,对用户来说,驱动程序屏蔽了不同对象 (数据库系统或打印机 )间的差异。同样地,ODBC 屏蔽了 DBMS 之间的差异。

Page 9: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

9

ODBC 数据库应用程序驱动程序管理器

SQLServer驱动程序

Oracle驱动程序

Foxpro驱动程序

Sybase驱动程序

SQLServer数据源

Oracle数据源

Foxpro数据源

Sybase数据源

DB DB DB DB

数据库操作结果也通过驱动程序返回给应用程序。

Page 10: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

10

19.1.3 VB6.0 支持的数据存取模式 VB6.0 支持的数据库存取模式有以下三种:

数据存取对象 (Data Access Objects, 简称 DAO) 远程数据对象 (Remote Data Objects, 简称 RDO) ActiveX 数据对象 (ActiveX Data Objects, 简称 ADO)

1 . DAO 简介 DAO 模式是 VB 最早期的数据访问模式。 是以 Microsoft 的 Jet 数据库引擎为核心而发展起来的一组

动态链接库。它提供了两种类型来支持数据库: 通过 Microsoft 的 Jet 数据库引擎来操作本地数据库。 通过使用 ODBCDirect ,来存取 ODBC 数据库。

使用 ODBC 存取方法, DAO 可以访问任何提供标准 ODBC 驱动程序的客户 / 服务器数据库。

Page 11: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

11

2 . RDO 简介 远程数据库是数据库应用中新兴的领域,随着 Inte

rnet 的推广,网络数据库应用系统日益增加。对于网络应用程序来说,其数据访问端与数据库之间有比较远的距离,使用 DAO 组件已不能满足远程数据访问的要求,因此应使用远程数据对象 RDO 来访问数据库。

RDO 直接与数据库服务器连接,所以它比较适合于客户机 / 服务器方式。

Page 12: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

12

3 . ADO 简介 ADO 是最新的数据访问技术, ADO 提供了较为高级的访问 OLE DB 数据源的机制,它结合了 DAO和 RDO 的优点,并提供了 OLE DB 数据源的入口。

OLE DB 是一个低层的数据访问接口,它向应用程序提供了一个统一的数据访问方法,利用它可以访问各种数据源,包括传统的关系型数据库、电子邮件系统及自定义的商业对象。

Page 13: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

13

19.1.4 SQL Server 数据库的 DSN 的配置 1 .开放式数据库互连( ODBC) 开放式数据库互连— ODBC( Open Database Con

nectivity)的概念来源于对多个数据库数据存取的需求。

在早期的数据库编程中,由于不同的数据库管理系统 (DBMS) ,有自己的数据库格式和嵌入式的 SQL语言,即使应用程序完成同样的功能,但只要 DBMS选取的不同,则编写的程序将完全不同。程序员为了能够访问不同的数据库而不得不学习多个 DBMS 的内容。

Page 14: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

14

希望摆脱专用数据库本身的约束,对于不同的 DBMS ,采用统一的编程界面,从而使数据库应用程序在访问另外一种数据库格式时,不需要对源程序进行修改。 ODBC 开发的最初目标就是为 Windows 程序员提供一套访问数据库的 SQL 函数调用,而这些函数的调用采用相同的用户界面。

ODBC 用户可以用 ODBC 的 SQL 语句访问任何支持 ODBC 标准的数据库,从而使应用程序访问不同的数据库的操作不依赖任何 DBMS ,也为程序的跨平台开发和移植提供了方便。

Page 15: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

15

2 . DSN 的配置 DSN 的意思是应用程序用以请求一个连接到 ODB

C 数据源的连接 (Connection) 的名字,即它代表一个 ODBC 连接的名称,内含了数据库文件名、所在目录、数据库驱动程序、用户 ID 、密码等细节,使得应用程序访问数据库时,只要给出事先注册的DSN ,而不必考虑以上细节问题,从而使程序中访问数据库变得简单。

DSN 可以分为以下三种 : 系统 DSN :可以被登录到系统中的所有用户使

用 用户 DSN :只能被建立它的用户使用 文档 DSN :把信息存储在后缀名为 .dsn 的文件

中,如果文件放在网络共享的驱动器中,就可以被所有安装了相同驱动程序的用户共享。

Page 16: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

16

DSN 配置步骤如下: 以前边建立的数据库 “ ts” 为例 。 ( 1)打开 ODBC 数据源管理器 ODBC 数据源管理器用来管理本机上所有的 ODBC

数据源,如注册新的数据源名称,删除或修改数据源等。

单击 [ 开始 ]\[ 设置 ] \[ 控制面板 ] ,打开控制面板窗口;

在其中双击 [ 管理工具 ] 图标,打开管理工具窗口; 双击 [ 数据源 ODBC] 图标,即可打开 ODBC 数据

源管理器如图 19-2 。

图 19-2 ODBC 数据源管理器

Page 17: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

17

( 2)选择数据源类型并添加数据源 在 [ODBC 数据源管理器 ] 中,单击 [ 系统 DSN]选项卡,再单击 [ 添加 ]按钮,将出现 [创建新数据源 ] 对话框如图 19-3 。

图 19-3 创建新数据源对话框

Page 18: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

18

( 3)选择驱动程序 在图 19-3 所示的驱动器列表中,选择“ SQL Serve

r”并单击 [完成 ]按钮,打开向导窗口如图 19-4 。

图 19-4 设置数据源名称及服务器

Page 19: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

19

( 4)设置数据源 在数据源 [名称 ]框中输入一个数据源名称(如

cjgl), [ 说明 ]框中可不输入,然后在 [ 服务器 ]列表框中选择需要连接的 SQL Server 服务器。

( 5)设置身份验证方式 单击 [ 下一步 ]按钮,打开对话框如图 9-5 所示。

在该对话框中,可以设置身份验证方式。若选择[ 使用用户输入登录 ID 和密码的 SQL Server验证 ] ,需要输入登录 ID 和密码, sa 是 SQL Server2000的系统管理员帐号。

图 19-5 设置身份验证方式

Page 20: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

20

( 6)设置默认的数据库 单击 [ 下一步 ]按钮,打开设置数据库选项对话框,

如图 19-6 所示。系统默认的数据库为 master ,在[更改默认的数据库为 ] 下拉列表框中,选择“成绩管理”,即将默认数据库设置为所需要的数据库。

图 19-6 设置数据库连接

Page 21: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

21

( 7)设置其它属性 单击 [ 下一步 ]按钮,打开设置其它属性的窗口,

如图 19-7 所示。在此可以设置用于 SQL Server消息的语言、数据加密、字符数据转换等等。

图 9-7 设置其它属性

Page 22: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

22

( 19)单击 [完成 ]按钮,将打开数据源的汇总信息窗口,如图 19-8 所示。在此窗口中综合显示了数据源的各项设置,从而决定是否创建数据库。

图 19-8 数据源汇总信息显示

Page 23: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

23

( 9)单击 [测试数据源 ]按钮,可以检查数据源配置是否成功。若配置成功,将显示图 19-9 所示的对话框。

图 19-9 测试数据源结果显示

Page 24: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

24

19.2 数据库访问控件的应用 在 VB 中,开发数据库应用程序有两种方式:一种

是利用 VB 提供的数据库访问控件,另一种是编写程序代码。

VB6.0 提供了支持 DAO 、 RDO 、 ADO 的特殊控件,以便访问和操作数据库。 Data 控件可以创建 DAO 对象, RemoteData 控件可以创建 RDO 对象 , ADO Data 控件可以创建 ADO 对象

利用这些控件可以方便地连接到数据库并操作数据库,但这些控件并不能显示数据,必须借助数据绑定控件(如文本框等)显示、修改数据。使用数据库访问控件,可以简化开发过程,减少代码编写量,从而提高工作效率。

Page 25: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

25

ADO Data 控件与 Data 控件、 RemoteData 控件相比, ADO Data 控件的功能更为强大,使用更为方便。因此本章主要介绍支持 ADO 的数据控件 ADO Data ,及与其绑定的数据绑定控件的主要功能及其应用。

Page 26: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

26

19.2.1 ADO Data 控件及数据绑定控件 ADO Data 控件可以说是连接数据库和数据绑定控

件的桥梁。 通过设置 ADO Data 控件的属性,可以让它和已存

在的数据库联系起来并能指定访问数据库中的某个表,并通过数据绑定控件 ( 如文本框 ,复选框等控件 ) ,显示数据库中的数据。

数据绑定控件用来显示数据表中的数据。需将控件绑定到 ADO Data 控件上的某字段上,就可显示和修改该字段的数据。绑定控件 数据库

Page 27: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

27

文本框 (Text): 显示或输入数据 标签 (Label): 显示数据 复选框 (Check): 显示逻辑类型字段 , True(Yes)/Fals

e(No) 列表框 (List), 组合框 (Combo): 显示数据列表 , 图像框 (Image), 图片框 (Picture): 显示图片 , 要求

字段为二进制类型 . 其它 ActiveX 控件 .

可以与 ADO Data 控件一起使用的数据绑定控件有 :

Page 28: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

28

大多数数据绑定控件都有以下这三种属性: ( 1) DataSource :数据源属性。指定需要绑定到的 ADO Data 控件的名称。

( 2) DataField :用来指定绑定到哪个字段上。 ( 3) DataChange :用来指出显示在绑定控件里

的数据是否已经被改变,如果改变,值为 True ,否则值为 False 。

Page 29: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

29

19.2.2 用 ADO Data 控件建立数据库应用程序

下面通过一个简单的例子,介绍用 ADO Data 控件建立数据浏览窗体的基本步骤。

(1) 新建一个标准的 VB 工程,将 ADO Data 控件添加到工具箱中

执行菜单 [ 工程 ]\[ 部件 ] ,打开“部件”对话框, 在“控件”列表框中选中“Microsoft ADO Data Control

6.0(OLE DB)”项,将 ADO Data 控件添加到工具箱中。 (2) 将 ADO Data 控件添加到窗体上 在窗体上, ADO Data 控件的外观如图 19-10 所示,默认

控件名称为 Adodc1, 可以单击其上的箭头按钮在记录之间移动。

图 19-10 ADO Data 控件的外观

Page 30: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

30

(3) 设置 ADO Data 控件的数据源连接属性 操作步骤如下: 在 Adodc1 控件的属性窗口中,选择 ( 自定义 ) 属性右边的 […]按钮,打开 [ 属性页 ] 对话框,或鼠标右击 Adodc1 控件,在弹出的快捷菜单中选择[ 属性 ] 命令,打开 [ 属性页 ] 对话框如图 19-11 所示。

在 [ 通用 ]选项卡中选择“使用 ODBC 数据资源名称”,并在下拉列表中选择前边建立的 ODBC 数据源名“ cjgl” 。

图 19-11 ADO Data 控件的 [ 属性页 ] 对话框

Page 31: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

31

单击 [身份验证 ]选项卡(如图 19-12),输入用户名(例如 sa)和密码(例如 sa)。

单击 [ 记录源 ]选项卡(如图 19-13),在该选项卡中,可以设置 ADO Data 控件的返回记录的记录源。

记录源是从命令对象获取的,可以在 [ 命令类型 ] 下拉列表中选择用于记录源的命令类型。各种命令类型的含义如表所示。命令类型 含义

19-adCmdUnknow 未知类型,用户需在 [命令文本 (SQL)]框中输入 SQL 语句建立命令对象

1-adCmdText 文本类型,用户需在 [命令文本 (SQL)]框中输入 SQL语句建立命令对象

2-adCmdTable 表类型,用户需在 [表或存储过程名称 ]下拉列表中选 择一个数据表来建立命令对象(相当于输入: Sele

ct * From Table)4-adCmdStoredProc 存储过程,用户需在 [表或存储过程名称 ]下拉列表中

选择一个查询的名称来建立命令对象

Page 32: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

32

图 19-12 身份验证的设置 图 19-13 记录源的设置

Page 33: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

33

例如要访问学生信息表,选择命令类型为 : 2-adCmdTable

然后在 [ 表或存储过程名称 ] 下拉列表框中选择“学生信息表”(如图 19-13 所示)。设置完成后,单击 [确定 ]按钮。

也可以选择命令类型为 1-adCmdText ,然后在 [ 命令文本 (SQL)] 框中输入如下 SQL 语句: Select* From 学生信息表

设置完成后,单击 [确定 ]按钮。

Page 34: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

34

(4) 向窗体中添加其他数据绑定控件,并绑定到 Adodc1上

在窗体 Form1上,添加 5 个文本框用于显示字段中的数据, 5 个标签用于说明对应的字段名(见图19-14)。

图 19-14 数据浏览窗体设计界面

Page 35: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

35

将控件 ( 如 Text) 绑定到 Adodc1上的方法如下: 设置绑定控件的 DataSource 属性为数据控件名 : Adodc1 设置绑定控件的 DataField 属性为要显示的字段名

各个文本框的属性设置如表 19-2 所示 . 考虑到浏览数据的窗体,不应允许修改数据,所

以将文本框的 Locked 属性设为 True ,使之只能显示数据而不能修改或输入数据。

Page 36: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

36

当所有文本框都通过表 19-2 所示的属性设置后,即完成了绑定到 Adodc1 所连接的数据源。这时可运行程序,结果如图 9-15 所示,可见文本框中显示了学生信息表的第一条记录信息,若单击 Adodc1上的按钮,可显示其他记录 。

控件名 属性名 属性值 控件名 属性名 属性值Text1 DataSource Adodc1 Text3 DataSource Adodc1

DataField 学号 DataField 性别Locked True Locked True

Text2 DataSource Adodc1 Text4 DataSource Adodc1

DataField 姓名 DataField 生日Locked True Locked True

Text2 DataSource Adodc1 Text2 Locked True

DataField 专业

Page 37: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

37

19.2.3 ADO Data 控件的常用属性及方法 1. ADO Data 控件的常用属性介绍如下: Name :名称。默认名称: Adodc1, Adodc2 等。 Caption :设置显示在控件上的标题。 ConnectionString :设置到数据源的连接信息。 CommandType :设置返回记录集的类型。 CommandType

的值用于指明 RecordSource 的 类型。 CommandType 的取值及含义如下:

1-adCmdText :文本类型,可在 " 命令文本框 " 中输入 SQL 语句。表示返回的记录集是执行 SQL 语句的结果。

2-adCmdTable :表类型。可在 " 表或存储过程名 "框中选择一个表名称 ( 相当于选择表的所有字段 ) 。表示返回的记录集类型是一个数据表。

4-adCmdStoredProc :存储过程类型。

Page 38: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

38

ReocordSurce :记录源。返回或设置 Recordset 的生成方式。可以是 SQL 语句,表名,查询名等。

Recordset :记录集对象。 2. ADO Data 控件的 Refresh 方法 功能:重新读数据库,刷新记录集。 使用格式: Adodc1. Refresh Refresh 方法可用于 ADO Data 控件的数据源连接

发生变化时,使 ADO Data 控件重新连接数据库。 也可在执行 AddNew 方法后,新数据尚未写入数据

库时,调用 Refresh 方法,清除用户所做的添加和修改。

Page 39: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

39

19.2.4 RecordSet 对象的常用属性及方法 1. RecordSet 对象的常用属性 ADO Data 控件将数据库中的指定数据提取出来,并放在一

个记录集中, RecordSet 即记录集对象,指当前数据库中的一系列记录。其主要属性如下:

(1) EOF 和 BOF 属性 这两个属性是反映记录指针是否到记录头和记录尾的标志。

如果记录指针位于第一条记录之前,则 BOF=True 否则 BOF=False 。如果记录指针位于最后一条记录之后,则 EOF=True 否则 EOF=False 。

EOF 和 BOF 属性具有以下特点: 如果记录集是空的,则 EOF 和 BOF 的值都是 True 如果 EOF 和 BOF 的值成为 True 之后,只有当记录指针移到实际存在的记录上,二者的值才会变为 False 。

Page 40: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

40

(2) RecordCount 属性 反映记录集中的记录总数。 例如要在 Adodc1 控件上显

示记录总数,可用如下语句: Adodc1.Caption = Adodc1.Recordset. RecordCount (3) AbsolutePosition 属性 反映当前记录的位置。若当前显示的是第一条记录,则

AbsolutePosition=1 例如要在 Adodc1 控件上显示当前记录的位置,可用如下语

句: Adodc1.Caption = Adodc1.Recordset.AbsolutePosition

例如要在 Adodc1 控件上显示当前记录的位置及记录总数,可用如下语句:

Adodc1.Caption = Adodc1.Recordset.AbsolutePosition &"/" & Adodc1.Recordset.RecordCount

Page 41: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

41

2. RecordSet 对象的常用方法 ( 1)Move 方法 利用 ADO Data 控件,通过编程的方法进行数据库浏览时,需要用到 ADO Data 控件的 RecordSet 对象的 Move 方法在记录集之间移动记录指针。主要有以下几种方法:

MoveNext 方法 : 记录指针移到下一条记录 MovePrevious 方法 : 记录指针移到上一条记录 MoveFirst 方法 : 记录指针移到第一条记录 MoveLast 方法 : 记录指针移到最后一条记录 Move[n] 方法 : 使记录指针前移或后移 n 条记录。

n 为正数 , 表示向后移动; n 为负数 , 表示向前移动 .

Page 42: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

42

例 19-2 设计数据浏览窗体,利用 Move 方法实现数据库的浏览。

在例 19-1 的基础上,添加按钮如图 19-16 ,运行时不显示 Adodc1( 设其 Visible 属性为 False) ,通过按钮实现记录指针的移动。

Page 43: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

43

设置新增控件的属性如表。

控件名 属性名 属性值 作用

CmdFirst Caption 首记录 将记录指针移到第 1条记录

CmdPre Caption 前移 记录指针向前移动一条记录

CmdNext Caption 后移 记录指针向后移动一条记录

CmdLast Caption 末记录 将记录指针移到末条记录

CmdN Caption 移动记录数 一次移动 n条记录

Text6 Text 空 输入要移动的记录数量

Label6 caption 空 显示当前记录数及记录总数

Page 44: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

44

编程如下 : Private Sub Form_Load() ‘ 设置按钮的初始状态 CmdFirst.Enabled = False ‘[首记录 ]按钮无效 CmdPre.Enabled = False ‘[ 前移 ]按钮无效 CmdNext.Enabled = True ‘后移 ]按钮有效 CmdLast.Enabled = True ‘[末记录 ]按钮有效 Label6.Caption = " 记录: " & Adodc1.Recordset.

AbsolutePosition & "/" & Adodc1.Recordset.RecordCount

End Sub

Page 45: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

45

Private Sub CmdFirst_Click() Adodc1.Recordset.MoveFirst ' 记录指针移到首记录(显示首记录)

CmdFirst.Enabled = False ' 让 [首记录 ]按钮无效 CmdPre.Enabled = False ' 让 [ 前移 ]按钮无效 CmdNext.Enabled = True ' 让 [后移 ]按钮有效 CmdLast.Enabled = True ' 让 [末记录 ]按钮有效 ‘在 Label6上显示当前记录号 / 记录总数: Label6.Caption = " 记录: " & Adodc1.Recordset.Absolute

Position & "/" & Adodc1.Recordset.RecordCount End Sub

Page 46: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

46

Private Sub CmdPre_Click() Adodc1.Recordset.MovePrevious ' 记录指针移到前一条记录 CmdNext.Enabled = True CmdLast.Enabled = True If Adodc1.Recordset .BOF Then ' 如果记录指针移到首记录之前 , Adodc1.Recordset.MoveFirst '则记录指针移到首记录上 CmdFirst.Enabled = False CmdPre.Enabled = False End If Label6.Caption =" 记录: " & Adodc1.Recordset.AbsolutePo

sition & "/" & Adodc1.Recordset.RecordCount End Sub

Page 47: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

47

Private Sub CmdNext_Click() Adodc1.Recordset.MoveNext ' 记录指针移到下一条记录 CmdFirst.Enabled = True CmdPre.Enabled = True If Adodc1.Recordset.EOF Then ' 如果记录指针移到了末记录之后

Adodc1.Recordset.MoveLast '则记录指针移到末记录上 CmdNext.Enabled = False CmdLast.Enabled = False End If Label6.Caption = " 记录: " &Adodc1.Recordset.AbsoluteP

osition & "/" & Adodc1.Recordset.RecordCount End Sub

Page 48: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

48

Private Sub CmdLast_Click() Adodc1.Recordset.MoveLast ' 移到末记录 CmdFirst.Enabled = True CmdPre.Enabled = True CmdNext.Enabled = False CmdLast.Enabled = False Label6.Caption =" 记录: " & Adodc1.Recordset.A

bsolutePosition & "/" & Adodc1.Recordset.RecordCount

End Sub

Page 49: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

49

Private Sub CmdN_Click() Dim n As Integer n = Text6.Text Adodc1.Recordset.Move n Label6.Caption = " 记录: " & Adodc1.Recordset.

AbsolutePosition & "/" & Adodc1.Recordset.RecordCount

End Sub

Page 50: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

50

( 2) AddNew 方法 功能:用于向数据表中增加空记录。 ( 3) Uptate 方法 功能:用来把添加的新记录或修改的记录保存到数

据表中,该方法只能在 AddNew 方法被执行之后才能执行。

Page 51: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

51

增加记录的操作可分为以下 3步: 调用 RecordSet 对象的 AddNew 方法,增加一

个空记录,语句格式如下: Adodc1.RecordSet.AddNew 在数据绑定控件中输入记录值,或用代码给字段赋值,格式如下:

Adodc1.RecordSet.Fields(“ 字段名” )=值 调用 Update 方法,将输入的新记录值保存到数

据表中,语句格式如下: Adodc1.RecordSet. Update

( 4) Delete 方法 功能:删除当前记录。 使用格式: Adodc1.RecordSet. Delete

Page 52: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

52

例 19-3 设计数据编辑窗体。 该窗体具有新增记录、删除记录、修改记录、取消

修改等功能。当新增记录或修改记录时,只要没有单击 [确定 ]按钮,单击 [ 取消 ]按钮,可以取消上述操作。

在例 19-2 的基础上,增加以下功能按钮: 添加 (CmdAdd) :执行记录集的 AddNew 方法 删除 (CmdDel) :执行记录集的 Delete 方法 确定 (CmdOk) :执行记录集的 Update 方法 取消 (CmdEsc) :执行数据控件的 Refresh 方法

Page 53: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

53

编写代码 Private Sub Form_Load() CmdFirst.Enabled = False ' [首记录 ]按钮无效 CmdPre.Enabled = False ' [ 前移 ]按钮无效 CmdNext.Enabled = True ' [后移 ]按钮有效 CmdLast.Enabled = True ' [末记录 ]按钮有效 CmdAdd.Enabled = True ‘ [ 添加 ]按钮有效 CmdDel.Enabled = True ‘ [ 删除 ]按钮有效 CmdOk.Enabled = False ‘ [确定 ]按钮无效 CmdEsc.Enabled = False ' [ 取消 ]按钮无效 Label6.Caption = " 记录: " & Adodc1.Recordset.Absolute

Position & "/" & Adodc1.Recordset.RecordCount End Sub

Page 54: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

54

Private Sub CmdAdd_Click() ‘ [ 添加 ]按钮的单击事件 Adodc1.Recordset.AddNew CmdAdd.Enabled = False CmdDel.Enabled = False CmdOk.Enabled = True CmdEsc.Enabled = True End Sub Private Sub CmdOk_Click() ' 单击 [确认 ]按钮 Adodc1.Recordset.Update CmdAdd.Enabled = True CmdDel.Enabled = True CmdOk.Enabled = False CmdEsc.Enabled = False End Sub

Page 55: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

55

Private Sub CmdDel_Click() ' 单击 [ 删除 ]按钮 x = MsgBox("确实要删除当前记录吗? ", vbYesNo + vbQu

estion, "确认 ") If x = vbYes Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If Else Adodc1.Refresh End If End Sub

Page 56: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

56

Private Sub CmdEsc_Click() ' 取消按钮 Adodc1.Refresh CmdAdd.Enabled = True CmdDel.Enabled = True CmdOk.Enabled = False CmdEsc.Enabled = False End Sub

Page 57: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

57

19.3 数据绑定控件的应用 19.3.1 数据绑定控件的概念 数据绑定控件是数据显示控件,只要将数据绑定控件绑定到

ADO Data 控件的 Recordset 对象中的某个字段上,就可以显示当前记录的该字段的值,并且可以接受用户对数据的修改。

使用绑定控件的方法和步骤为: 将绑定控件添加到窗体上,并调整大小和布局。 设置控件的一般属性。 设置控件的 DataSource 属性,即绑定到 ADO Data 控件。 设置控件的 DataField 属性,即绑定到 ADO Data 控件的

记录集对象 (Recordset) 的某个字段上。 注意:数据绑定控件的 DataSource 属性在运行时是不可改

的,所以不能在运行程序时通过代码设置该属性。

Page 58: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

58

【例 19.4】设计含有学生照片字段的学生信息编辑窗体。

在以前建立的学生信息表中增加“照片”字段。每个学生的照片以图片文件形式存放在磁盘中,图片文件名及其所在的路径(位置)存放在学生信息表中的照片字段中,所以该字段的类型设为 varchar型。

本题采用 Image 显示照片,因为将 Image 控件的 Stretch 属性设为 True ,可以自动调整图片的大小以适应 Image 控件边框的大小。

用 Image或 Picture 控件显示图片的方法 : Image1.Picture = LoadPicture( 图片文件名 ) Picture1.Picture = LoadPicture( 图片文件名 )

Page 59: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

59

将该图片加载到 Image1上,可执行如下语句: Image1. Picture = LoadPicture("d:\lzw\phot\ face01.

jpg") 若要清空图象框,即 Image1 中不显示图片,可执

行如下语句: Image1. Picture = LoadPicture( ) 如果要将存放在数据表中“照片”字段的图片文件装载到 Picture1上显示出来,可执行如下语句:

Picture1. Picture = LoadPicture(Adodc1.RecordSet.Fields("照片 "))

Page 60: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

60

设计过程如下: ( 1)设计界面如图 19.18 所示。

图 19.18 例 19.4 的设计界面

增加了一个 Image1 ,用于显示照片;

增加“浏览…”按钮,用于在录入照片时,显示“打开文件”对话框,以便用户选择图片文件;

增加 CommanDialog 控件,用于提供“打开文件”对话框。

Page 61: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

61

( 2)设置新增控件的属性如表所示。

控件名 属性名 属性值

按钮 CmdFind Caption 浏览…图像框 Image1 stretch True

BorderStyle 1- Fixed Single(单边框 )

通用对话框 CommonDialog1

Caption 打开文件

Page 62: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

62

( 3)编写代码如下: Private Sub Form_Load() CmdFirst.Enabled = False CmdPre.Enabled = False CmdNext.Enabled = True CmdLast.Enabled = True Adodc1.Recordset.MoveFirst CmdAdd.Enabled = True CmdDel.Enabled = True CmdOk.Enabled = False CmdEsc.Enabled = False Label6.Caption = " 记录: " & Adodc1.Recordset.AbsolutePosition & "/"

_ & Adodc1.Recordset.RecordCount Image1.Picture = LoadPicture(Adodc1.Recordset.Fields("照片 ")) ' 显示照片

CmdFind.Visible = False ' [浏览… ] 按钮不可见 End Sub

Page 63: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

63

' 单击“添加”按钮的代码 Private Sub CmdAdd_Click() Adodc1.Recordset.Ad

dNew CmdAdd.Enabled = False CmdDel.Enabled = False CmdOk.Enabled = True CmdEsc.Enabled = True Image1.Picture = LoadPicture() ' 清空图像框 CmdFind.Visible = True ' [浏览… ]按钮可见 End Sub

Page 64: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

64

‘ 单击 [浏览… ]按钮的代码:

Private Sub CmdFind_Click() CDialog1.ShowOpen ' 显示“打开文件”对话框 Adodc1.Recordset.Fields("照片 ") = CDialog1.FileName ' 选中的文件名送数据表中

Image1.Picture = LoadPicture(Adodc1.Recordset.Fields("照片 ")) ' 显示照片

End Sub

Page 65: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

65

Private Sub CmdOk_Click() ' 单击“确认”按钮的代码 Adodc1.Recordset.Update CmdAdd.Enabled = True CmdDel.Enabled = True CmdOk.Enabled = False CmdEsc.Enabled = False CmdFind.Visible = False Label6.Caption = " 记录: " & Adodc1.Recordset.Absolute

Position & "/" & _ Adodc1.Recordset.RecordCount End Sub

Page 66: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

66

Private Sub CmdFirst_Click() ' 单击“首记录”按钮的代码

Adodc1.Recordset.MoveFirst CmdFirst.Enabled = False CmdPre.Enabled = False CmdNext.Enabled = True CmdLast.Enabled = True Image1.Picture = LoadPicture(Adodc1.Recordset.Fields

("照片 ")) Label6.Caption = " 记录: " & Adodc1.Recordset.Absolute

Position & "/" & Adodc1.Recordset.RecordCount End Sub

Page 67: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

67

“删除”、“取消”按钮的单击事件过程代码与例19.3 相同。其余移动记录指针的按钮单击事件过程代码与例 19.3 相比,都增加了显示照片的语句:

Image1.Picture=LoadPicture(Adodc1.Recordset.Fields("照片 "))

运行程序 ,当单击各移动按钮时,学生记录改变,照片也随之改变。

当单击“添加”按钮时,所有文本框及图像框清空,表示空记录,供用户输入新记录数据,此时“浏览…”按钮可见,

单击“浏览…”按钮,出现“打开文件”对话框,用户可在其中选择图片文件,加载到图像框中,

单击“确定”按钮,则新录入的数据及图片文件名保存到数据表中。

Page 68: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

68

19.3.2 List 控件和 Combo 控件的应用 在设计数据录入窗体时,有的字段数据取值范围很小,为了录入方便并且保证该字段数据的标准性,可以使用列表框或组合下拉列表框为用户提供可选的输入项。

例如,将例 19-3 中的录入性别字段的文本框 Text3删除,改用 Combo 控件,控件的名称用默认名 Combo1,并绑定到 Adodc1(已连接到学生信息表)的性别字段,即设置 Combo1 的属性

DataSource 为: Adodc1 DataField 为:性别。

Page 69: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

69

在窗体的 Form_Load()事件中,用 Combo1 的 AddItem 方法,将“男”、“女”两项添加到 Combo1 中,代码如下:

Private Sub Form_Load() Combo1.AddItem "男 " Combo1.AddItem "女 " End Sub 运行界面如图所示。

Page 70: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

70

19.3.3 DataList 控件和 DataCombo 控件的应用

该两个控件属于 ActiveX 控件,不在标准工具箱中,需要添加到工具箱中。添加控件到工具箱中的方法如下:

执行菜单 [ 工程 ]\[ 部件 ] 命令,选中 “Microsoft Data List Controls 6.0” ,即可见 DataList 和 DataCombo 两个控件的图标出现在工具箱中。

DataList 和 DataCombo 控件的作用是在录入数据时,给用户提供输入选项列表。

与 List 和 Combo 不同的是, DataList 和 DataCombo这两个控件中的选项字符串是通过其所绑定的数据表字段的内容自动添加的。

Page 71: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

71

主要属性有: DataSource :实际要录入的记录源的 ADO Data 控

件名。 DataField : 实际要录入数据的字段名。 RowSource :用于生成控件列表信息的 ADO Data

控件名称。 ListField : 用于填充列表框的由 RowSource指定

的记录集中的字段名。 BoundColumn :由 RowSource指定记录集的实际

要录入的字段名,该字段名是与 DataSource 相关联的字段(一般与 DataField 的相同)。

控件的作用:借助于 RowSource 的 ListField 字段,为 DataSource 的 DataField 字段输入数据。

Page 72: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

72

例 19-5 设计课程信息表的编辑窗体,实现对课程信息表录入数据。

要求:对课程信息表进行录入时,输入“教师编号”时,借助 “教师信息表”中的“姓名”字段进行输入。即“教师编号”字段的输入控件采用 DataCombo ,其中列出的是现有教师的姓名,供用户选择录入,虽然表面看录入的是姓名,而实际录入课程信息表的是该教师的教师编号。

Page 73: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

73

课程编号 课程名称 学时 学分 教师编号

1001 C语言 50 5 01001

1002 数据结构 60 6 03002

1003 数据库 40 4 03002

1004 操作系统 50 5 03004

1005 机械设计 70 7 10002

1006 机械原理 40 4 10001

教师编号 姓名 性别 职称 单位01001 郑虹 女 副教授 机械学院01002 孙燕 女 讲师 机械学院03001 赵博 男 教授 信息学院03002 王伟 男 教授 信息学院03003 王刚 男 副教授 信息学院03004 孙丽 女 讲师 信息学院

表 19-5 教师信息表

表 19-6 课程信息表 DataSource DataField

RowSource

ListField

BoundColumn

Page 74: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

74

( 1)设计界面如图 19-19 所示 ( 2)利用 Adodc1 的属性页,将 Adodc1 连接到

数据源 ts 的课程信息表上; 将 Adodc2 连接到数据源 ts 的教师信息表上。

图 19-19 设计界面

Page 75: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

75

连接完数据源的 Adodc1 和 Adodc2 的属性值结果如下表所示。

控件名 属性名 属性值 Adodc1

ConnectionString DSN = ts

Password sa

CommandType 2- adCmdTable

RecordSource 课程信息表UserName sa

Visible False

Adodc2 ConnectionString DSN = ts

CommandType 2- adCmdTable

RecordSource 教师信息表Password sa

UserName sa

Visible False

Page 76: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

76

设置 DataCombo1 控件的属性如下: DataSource Adodc1 DataField 教师编号 RowSource Adodc2 ListField 姓名 BoundColumn 教师编号 如此设置 DataCombo1 的属性之后,运行界面如图

19-20 ,可见 DataCombo1 控件中填充的各项是教师信息表的姓名字段的数据。

但实际要录入到课程信息表的是教师编号字段。

Page 77: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

77

( 3)对各按钮编程如下: Private Sub CmdAdd_Click() ‘[ 增加 ]按钮单击事件 Adodc1.Recordset.AddNew CmdAdd.Enabled = False CmdDel.Enabled = False CmdOK.Enabled = True CmdCancel.Enabled = True End Sub Private Sub CmdOK_Click() ‘[确定 ]按钮单击事件 Adodc1.Recordset.Update CmdAdd.Enabled = True CmdDel.Enabled = True CmdOK.Enabled = False CmdCancel.Enabled = False End Sub

Page 78: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

78

‘[ 取消 ]按钮单击事件 Private Sub CmdCancel_Click() Adodc1.Refresh CmdAdd.Enabled = True CmdDel.Enabled = True CmdOK.Enabled = False CmdCancel.Enabled = False End Sub

Page 79: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

79

Private Sub CmdDel_Click() ' 单击 [ 删除 ]按钮 x = MsgBox("确实要删除当前记录吗? ", vbYesNo + vbQu

estion, "确认 ") If x = vbYes Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If Else Adodc1.Refresh End If End Sub

Page 80: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

80

19.3.4 DataGrid 控件的应用 DataGrid 控件可以用表格形式显示记录集数据。只要将 DataGrid 控件绑定到 ADO Data 控件上,就可以将 ADO Data 控件所连接的记录源中的数据自动显示到 DataGrid 表格中。

将 DataGrid 控件加载到 VB 工具箱中的方法如下: 执行 [ 工程 ]\[ 部件 ] 命令,打开 [ 部件 ] 对话框; 在 [ 控件 ] 选项卡中,选中 “Microsoft DataGr

id Control 6.0”; 单击 [确定 ] 按钮,即可将控件加到了工具箱中。

Page 81: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

81

DataGrid 的主要属性如下: Caption :设置表格的标题文字。 HeadFont :设置标题的字体。 Font :设置表格显示的字体。 DataSource :数据源属性。指定需要绑定的 ADO Data 控

件的名称。 Col : 表示当前列号(从 0 开始) Row :表示当前行号 ( 即当前记录号,从 0 开始 ) Text :存放选中单元格的文本 AllowAddNew :指出是否允许向 DataGrid 控件所连接的

记录集中增加新记录。 True :允许。 AllowDelete :指出是否允许在 DataGrid 控件所连接的记录集中删除记录。 True :允许。

AllowUpdate :指出是否允许在 DataGrid 控件所连接的记录集中修改记录。 True :允许。

Page 82: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

82

例 19-6 DataGrid 控件与 Adodc1 绑定,显示教师信息表的所有记录。

要求:运行时,显示课程信息编辑窗体 ( 如图 9-21 所示 ) ,当录入教师姓名时,若要了解教师的详细信息,可单击 [教师信息 ]按钮,打开 Form2( 如图 9-22 所示 ) ,在 Form2 中用表格形式浏览所有教师的基本信息,在浏览完教师基本信息后,单击 [返回 ]按钮,则关闭浏览窗体,显示编辑窗体。

设计过程如下: ( 1)设计界面 在例 19-4 的工程中,新添加一个窗体 Form5 ,用来以表格形式显示教师表的所有记录。

在窗体 Form2 中添加 DataGrid1 和 Adodc1 控件,添加一个按钮,名称为 CmdBack ,标题为:返回(如图 19-22)。

在 Form1 中添加一个按钮,名称为 Cmd1, 标题为:教师信息(见图 19-21)。

Page 83: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

83

图 19-21 在 Form2 中添加 [教师信息 ]按钮

图 19-22 用 DataGrid 显示教师信息表运行界面

Page 84: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

84

( 2)设置控件的属性 设置 Form5 中的 Adodc1 控件的属性如下: 鼠标右击 Adodc1 控件,打开属性页,在 [ 通用 ]选项卡中选择 ODBC 数据资源名称为 ts;

在 [身份验证 ]选项卡中,输入用户名: sa 、密码: sa; 在 [ 记录源 ]选项卡中,选择命令类型: 2-adCmdTable 、

在 [ 表或存储过程名 ] 中选择“教师信息表”,然后单击[ 应用 ]按钮,再单击 [确定 ]按钮,关闭该属性对话框。

Visible : False(运行时不可见)。 设置 Form2 中的 DataGrid1 的属性如下: 数据源 DataSource : Adodc1 总标题 Caption :教师信息 标题的字体 HeadFont :宋体、五号、加粗

Page 85: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

85

( 3)编写代码 在 Form1 中单击 [教师信息 ]按钮时,显示 Form2 ,

编写代码如下: Private Sub Cmd1_Click() Form5.Show End Sub 在 Form2 中单击 [返回 ]按钮时,关闭 Form2 ,

编写代码如下: Private Sub CmdBack_Click() Form2.Show Unload Me End Sub

Page 86: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

86

例 19-7 设计可以显示教师信息,并且当单击 DataGrid1选中教师表的某行记录时,在 DataGrid2 控件中显示该教师所教的课程信息。

( 1)设计界面 添加控件到窗体上,如图 19-23 。

图 19-23 例 19-6 界面设计

图 19-24 例 19-6运行界面

Page 87: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

87

( 2)设置控件的属性 设置 Adodc1 控件的属性如下:

Visible : False(运行时不可见)。 连接到教师信息表上

设置 Adodc2 控件的属性如下: 与 Adodc1 控件的属性设置基本相同,所不同的是

[ 记录源 ] 的设置: 在 [ 记录源 ]选项卡中,选则命令类型: 1-adCmdText , 在 [ 命令文本 (SQL)]框中输入 SQL 语句:

Select * From course ‘ 课程信息表

Page 88: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

88

DataGrid1 与 Adodc1 绑定,显示教师表记录,设置属性如下:

 DataSource : Adodc1 Caption :教师信息 HeadFont :宋体、五号、加粗

DataGrid2 与 Adodc2 绑定,显示课程表信息,设置属性如下:

DataSource : Adodc2 Caption :课程信息 HeadFont :宋体、五号、加粗

Page 89: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

89

( 3)编写程序 Private Sub DataGrid1_Click() Dim SQLStr As String SQLStr = "Select * From course Where 教师编号

= '" & Adodc1.Recordset.Fields("教师编号 ") & " ' "

Adodc2.RecordSource = SQLStr ' 设置 Adodc 2 连接的记录源

Adodc2.Refresh End Sub 运行程序,在 DataGrid1 中,单击选择某行记录,则可在下边的 DataGrid2 中显示对应教师的讲课情况(结果见图 19-24)。

Page 90: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

90

例 19-8 编写一个可浏览教师表数据,并可修改教师表数据的程序。

要求:在 Form1 中(如图 19-25),显示教师信息表格;当选中某行记录并单击 [ 修改数据 ]按钮时,将打开 Form2(如图 19-26 所示),显示该行记录的信息,并可以修改数据。

图 19-25 教师信息表界面 图 19-26 信息修改界面

Page 91: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

91

( 1)设计界面及设置属性 在 Form1 中,添加一个 DataGrid1 和 Adodc1 。设

置属性如下: 将 Adodc1 连接到 ts 数据源的“教师信息表”, Vi

sible : False(运行时 Adodc1 不可见); 将 DataGrid1 的 DataSource 设为 Adodc1 ,即绑定到 Adodc1上,并在 DataGrid1 的属性页中的 [ 通用 ] 选项卡中,将 [允许更新 ] 、 [允许删除 ]复选框设为不选中状态(即不允许在 DataGrid1 中修改数据)。

在 Form1 中,添加 1 个按钮,名称为 CmdEdit ,Caption 设为 “修改数据”。

Page 92: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

92

Form2 中,添加 5 个标签,用于显示教师信息表的字段名,2 个文本框 Text1 、 Text2 用于显示在 Form1 中选中的记录的教师编号和姓名。

性别、职称和单位分别用组合列表框 Combo1 、 Combo2 、Combo3 显示,这三个组合列表框也提供输入值的选项列表。

Form2 中控件的属性设置如表。控件名 属性名 属性值 控件名 属性名 属性值

Text1 Text 空 CmdUpdate Caption 更新

Text2 Text 空 CmdBack Caption 返回

Combo1 List 男女

Combo2 List 教授副教授讲师

Combo3 List 信息学院机械学院经贸学院外语学院

Page 93: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

93

( 2)程序设计如下 Form1 中的代码: Private Sub CmdEdit_Click() ‘[ 修改数据 ]按钮的单击事件 '判断是否选中了表中的一行: If Adodc1.Recordset.EOF Or Adodc1.Recordset.BOF Then MsgBox "请选择要修改的行 " Exit Sub End If Form2.Show ' 显示 Form2 Form1.Hide ' 隐藏 Form1 End Sub

Page 94: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

94

Form2 中的代码如下: Private Sub Form_Load() ’ 显示在 Form1 中选择的当前记

录值 Text1.Text = Form1.Adodc1.Recordset.Fields("教师编号 ") Text2.Text = Form1. Adodc1.Recordset.Fields("姓名 ") Combo1.Text = Form1. Adodc1.Recordset.Fields("性别 ") Combo2.Text = Form1. Adodc1.Recordset.Fields("职称 ") Combo3.Text = Form1. Adodc1.Recordset.Fields("单位 ") End Sub

Page 95: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

95

Private Sub CmdUpdate_Click() ’ Form2 中 [更新 ]按钮的单击事件

Form1.Adodc1.Recordset.Fields("教师编号 ") = Text1.Text Form1.Adodc1.Recordset.Fields("姓名 ") = Text2.Text Form1.Adodc1.Recordset.Fields("性别 ") = Combo1.Text Form1.Adodc1.Recordset.Fields("职称 ") = Combo2.Text Form1.Adodc1.Recordset.Fields("单位 ") = Combo3.Text Form1.Adodc1.Recordset.Update Form1.Adodc1.Refresh End Sub

Page 96: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

96

Private Sub CmdBack_Click() ‘Form2 中 [返回 ]按钮的单击事件

Unload Form2 ‘卸载 Form2 Form1.Show ‘ 显示 Form1 End Sub

Page 97: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

97

19.4 在 ADO Data 控件中使用 SQL 语句进行查询 在数据库应用程序设计中,经常需要查找满足一定条件的记

录集,这就是查询操作。利用 SQL 语言中的 SELECT 语句,可以实现查询。

在 ADO Data 控件中使用 Select 语句查询的步骤如下 ( 1)给出 Select 语句字符串 ( 2)将 Select 语句字符串赋给 ADO Data 控件的 RecordS

ource 属性 ( 3)执行 ADO Data 控件的 Refresh 方法。 例如在文本框中输入要查询的学生姓名,查询该生的基本信

息的 SQL 语句应为: Str= "Select * From 学生信息表 Where 姓名 = ' " & Text1

& " ' " Adodc1. RecordSource = Str Adodc1. Refresh

Page 98: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

98

例 19-9 根据输入的姓名,查询教师讲课信息。 设计窗体如图 19-27 。 要求:在 Text1 中输入姓名,单击 [ 查询 ]按钮,

显示该教师的讲课情况如图 19-28 。注意表中除了显示课程信息表的所有字段,还显示教师的“姓名”字段(该字段属于教师信息表),所以要用到两表查询语句。

图 19-27 查询界面的设计 图 19-28 查询程序的运行结果

Page 99: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

99

添加控件,并设置属性如下: 设置 Adodc1 控件的属性

Visible : False 鼠标右击 Adodc1 控件,打开属性页,在 [ 通用 ]选项卡中选择 ODBC 数据资源名称为 cjgl;

在 [ 记录源 ]选项卡中,选则命令类型: 1-adCmdText ,

在 [ 命令文本 (SQL)] 中输入 SQL 语句: Select * From 教师信息表

DataGrid1 与 Adodc1 绑定,设置属性如下:  DataSource : Adodc1 Caption :教师信息表

Page 100: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

100

文本框的属性如下: 名称: Text1 Text : 清空

标签的属性: 名称: Label1 Caption :输入姓名

按钮的属性如下: 名称: Cmd1 Caption :查询

Page 101: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

101

编写代码: ' [ 查询 ]按钮的单击事件: Private Sub Cmd1_Click() Dim str As String str = " Select 教师信息表 .姓名 , 课程信息表 .* Fr

om 课程信息表 , 教师信息表 " str = str & " where教师信息表 .教师编号 = 课程

信息表 .教师编号 and" str = str & " 教师信息表 .姓名 = ' " & Text1 &

" ' " Adodc1.RecordSource = str Adodc1.Refresh End Sub

Page 102: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

102

此题若改为“模糊查询”,只需将代码中的查询语句的条件改为:

"Where 教师信息表 .姓名 Like ' " & Text1 & " % ' "

这时运行程序,在文本框中只要输入姓(例如:王),就可以在表格中显示所有姓王的教师的讲课信息。

Page 103: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

103

例 19-10 设计能够选择多种条件的查询窗体。 要求:在例 19-9 的基础上做进一步的改进,可以选择按教师姓名、教师编号、课程名称、课程编号、学时等条件,查询课程信息。查询结果中包含:课程信息表的所有字段、教师信息表的“姓名”字段。

( 1)设计界面如图 19-29 所示。 其中组合列表框 Combo1 中添加查询条件的字段名,供用

户选择。

图 19-29 查询界面的设计

图 19-30 查询程序的运行结果

Page 104: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

104

( 2)设计代码 Private Sub Form_Load() Combo1.AddItem "姓名 " ' 为组合列表框添加各选项 Combo1.AddItem "教师编号 " Combo1.AddItem " 课程名称 " Combo1.AddItem " 课程编号 " Combo1.AddItem " 学时 " Combo1.Text = "姓名 " ' 让组合框初始选中 "姓名 "项 Text1.Text = "" ' 清空文本框 End Sub

Page 105: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

105

Private Sub Cmd1_Click() Dim str As String str = " Select 教师信息表 .姓名 , 课程信息表 .* From 课程

信息表 , 教师信息表 " str = str & “ where教师信息表 .教师编号 = 课程信息表 .教师编号 and "

str = str & " 课程信息表 ." & Combo1.Text & " Like ' " & Text1 & " %' "

Adodc1.RecordSource = str Adodc1.Refresh End Sub 本例实现模糊查询,运行程序时,选择按“课程名称”查询,

输入查询信息:机械,结果搜索到课程名称以“机械”开头的课程信息,如图 19-30 。

Page 106: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

106

例 19-11 设计登录窗体。 要求:将该登录界面设为启动窗体,当密码输入正确时,才显示查询窗体。在 Text1 中输入用户名,在 Text2 中输入密码,若正确,则打开 Form1 ,否则提示密码错误。允许输入 3 次。

( 1)设计界面 在例 19-19 的基础上,添加一个窗体 Form2 ,设计登录界面如图 19-31 所示。

图 19-31 登录窗体

Page 107: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

107

添加窗体的方法:执行菜单: [ 工程 ]\[ 添加窗体 ] 命令,在 [ 新建 ]选项卡中,选中“窗体”并单击 [打开 ]按钮,即可在本工程中添加 Form2 。

设启动窗体的方法:执行菜单 [ 工程 ]\[ 工程 属性 ], 在打开的对话框中,将启动对象设为 Form2 。

( 2)设计密码表 在“成绩管理”数据库中添加一个密码表,表结构如表 19-

9 ,在表中存放一组用户名和密码如表 19-10 。

字段名 数据类型 长度

用户名 char 10

密码 char 6

用户名 密码lzw 111111

表 19-9 密码表的表结构表 19-10 密码表

Page 108: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

108

( 3)设置各控件的属性 Adodc1 连接到密码表,方法同前;注意在 [ 记录源 ]选项卡中,选则命令类型: 1-adCmdText ,在 [ 命令文本 (SQL)] 中输入 SQL 语句: select * from 密码表

Vsible : False(运行时不可见)。 文本框 Text1 的属性: Text :清空。 文本框 Text2 的属性: Text :清空, PasswordChar : * 注意: Text1 和 Text2 不要绑定到 Adodc1上,以免刚启动登录窗体时,就显示密码表的内容。

[登录 ]按钮的属性:名称: CmdLand , Caption :登录 [ 取消 ]按钮的属性:名称: CmdCancel , Caption :取消

Page 109: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

109

( 4)编写程序 [登录 ]按钮单击事件的代码如下: Dim miCount As Integer ‘ 用于记录输入密码次数 Private Sub CmdLand_Click() Dim sqlstr As String sqlstr = "Select * From 密码表 Where 用户名 = ' " & Text1 &

" ' " Adodc1.RecordSource = sqlstr Adodc1.Refresh If Adodc1.Recordset.BOF Then ‘ 若没找到符合 Where条件的记录 MsgBox " 用户名错误,重新输入 " , vbExclamation, "警告 " Text1.Text = " " Text1.SetFocus ' Text1获得焦点

Page 110: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

110

Else ' 判断密码是否正确 If Adodc1.Recordset.Fields(" 密码 ") = Text2 The

n Form1.Show Unload Me Else MsgBox " 密码错误,重新输入 ", vbExclamatio

n, "警告 " Text2.Text = " " Text2.SetFocus End If End If

Page 111: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

111

miCount = miCount + 1 If miCount = 3 Then Unload Me End Sub

Private Sub CmdCancel_Click() Unload Me End Sub

Page 112: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

112

练习:例 19-12 设计一个 MDI 主窗体 ( 多文档界面 ) ,将以前设计的各个窗体组合在一起,形成一个工程。

要求:设计菜单如图 19-34 。运行时,首先显示该主窗体,并使 [ 数据管理 ]菜单无效。

在 [文件 ]菜单中单击 [登录 ] 命令,可打开 [登录 ] 对话框,若输入密码正确,则使其他菜单有效,系统可以工作。单击[文件 ]菜单中的 [退出 ] 命令,则结束运行。

在 [ 数据管理 ]菜单中,可以打开教师信息浏览窗体、查询窗体等。

图 19-34 MDI 主窗体

Page 113: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

113

建立MDI窗体,菜单等。步骤如下: ( 1)在例 19-10 的工程中添加主窗体: 执行菜单 [ 工程 ]\[ 添加 MDI窗体 ] ,添加一个 M

DI窗体作为主窗体,名为: MDIForm1 。 ( 2)设置启动对象 执行菜单 [ 工程 ]\[ 工程 1 属性 ] ,将启动对象

设为 MDIForm1 ( 3)为 MDIForm窗体建立菜单 打开 "菜单编辑器 " : [ 工具 ]\[菜单编辑器 ] 设计菜单如表 19-11 。

Page 114: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

114

表 19-11 菜单的属性列表

标题及位置 名称

文件 (&F) mFile

…. 登录 mFDenglu

…. 退出 (&X) mFExit

数据管理 (&D) mDataMng

….浏览教师表 mDjiaoshi

….查询 mDcaxun

Page 115: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

115

( 4)设置工程中的各窗体 将工程中的登录窗体的 Name 改为 frmDenglu 修改工程中的查询窗体的 Name : frmcaxun 、 M

DIChild: True ,即将其设为 MDIForm1 的子窗体。 将例 19-5 中的教师浏览窗体添加进来设置属性如下: Name : frmjiaoshi MDIChild : True 添加窗体的方法:执行菜单 [ 工程 ]\[ 添加窗体 ] ,

在打开的对话框中,选择 [ 现存 ]选项卡,找到并选中例 19-5 中的教师浏览窗体,单击 [打开 ]按钮即可。

Page 116: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

116

( 5)编写代码 主窗体启动时,将设 [ 数据管理 ]菜单无效: Private Sub MDIForm_Load() mDataMng.Enabled = False End Sub 为各菜单编写代码: Private Sub mFDenglu_Click() Frmdenglu.Show ‘ 显示登录窗体 End Sub Private Sub mDjiaoshi_Click() Frmjiaoshi.Show ‘ 显示教师信息窗体 End Sub

Page 117: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

117

Private Sub mDcaxun_Click() Frmcaxun.Show End Sub Private Sub mFExit_Click() End End Sub

Page 118: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

118

登录窗体的代码修改如下:(要求:当密码和用户名都输入正确时,使 [ 数据管理 ]菜单有效)

Private Sub CmdLand_Click() Static miCount As Integer Dim sqlstr As String sqlstr = "Select * from 密码表 Where 用户名 = '"

& Text1 & "'" Adodc1.RecordSource = sqlstr Adodc1.Refresh

Page 119: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

119

If Adodc1.Recordset.BOF Then MsgBox " 用户名错误,重新输入 ", vbExclamation, "警告 " Text1.Text = "" : Text1.SetFocus Else '判断密码是否正确 If Adodc1.Recordset.Fields(" 密码 ") = Text2 Then MDIForm1.mDataMng.Enabled = True ’ 使数据管理菜单有效

Unload Me Else MsgBox " 密码错误,重新输入 ", vbExclamation, "警告 " Text2.Text = "": Text2.SetFocus End If End If

Page 120: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

120

miCount = miCount + 1 If miCount = 3 Then Unload Me ’ 若已输入 3 次,则关闭窗

体 End Sub Private Sub CmdCancel_Click() Unload Me End Sub 运行程序,首先显示 MDI 主窗体,且 [ 数据管理 ]菜单无效;

在 [文件 ]菜单中单击 [登录 ] ,显示登录窗体,输入用户名和密码,若正确,则 [ 数据管理 ]菜单变为有效;

在 [ 数据管理 ]菜单中,单击 [浏览教师信息 ] ,即可打开窗体,如图 19-33 所示。

图 19-33 在 MDI窗体中打开教师信息子窗体

Page 121: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

121

练习:例 19-13 设计注册新用户窗体。 设计界面如图 19-34 。

图 19-34 注册新用户窗体

Page 122: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

122

设置对象的属性如表 19-12 。对象名 属性名 属性值 对象名 属性名 属性值

Form1 Caption 注册新用户

Adodc1

ConnectionString DSN=cjgl

Label1

Caption 注册新用户 CommandType 1-adCmdText

Font 华文彩云、四号

RecordSource select * from 密码表

Visible False

Label2 Caption 输入用户名 Text1 Text 空白

Label3 Caption 输入密码 Text2 PassWordChar *

Label4 Caption 确认密码 Text3 PassWordChar *

Page 123: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

123

编写代码如下: Private Sub CmdOK_Click() ‘单击 [确认 ]按钮 Dim sqlstr As String If Text1 = "" Then MsgBox "请输入用户名! ", vbExclamation, "确认用户名 "

Text1.SetFocus Exit Sub Else sqlstr = "Select * from 密码表 where 用户名 ='" & Text1

& "'" Adodc1.RecordSource = sqlstr Adodc1.Refresh

Page 124: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

124

‘判断输入的用户名是否已存在: If Adodc1.Recordset.EOF = False Then MsgBox “ 用户名已存在,请重新输入! ", vbExc

lamation, "检验用户名 " Text1 = "" Text1.SetFocus Exit Sub End If End If

Page 125: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

125

'判断二次输入密码是否一致: If Text2 < > Text3 Then MsgBox "二次输入的密码不一致,请重新输入 ",

vbExclamation, "检验密码 " Text2 = "" : Text3 = "" Text2.SetFocus Exit Sub ElseIf Text2 = "" Then MsgBox " 密码不能为空! ", vbExclamation, "检验密码 "

Text2.SetFocus

Page 126: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

126

Else Adodc1.Recordset.AddNew Adodc1.Recordset.Fields(" 用户名 ") = Trim(Text1) Adodc1.Recordset.Fields(" 密码 ") = Trim(Text2) Adodc1.Recordset.Update Me.Hide MsgBox " 成功注册新用户! ", vbInformation, " 添加用

户 " End If End Sub

Private Sub CmdCancel_Click() ’单击取消按钮 Unload Me End Sub

Page 127: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

127

19.5 通过 ADO 编程模型访问数据库 ADO 的核心是 Connection 、 Recordset 和 Command 对象。

ADO 编程模型不使用 ADO 数据控件,直接用代码通过 ADO 对象访问数据库。

使用 ADO 编程模型需事先添加 ADO 对象类库的“引用”: 执行【工程】菜单中的【引用】命令,打开【引用】对话框,

在对话框的列表中选中“Microsoft ActiveX Data Objects 2.x Library” 前的复选框,单击【确定】按钮。

添加“引用”后,应声明 ADO 对象变量: Dim 变量名 As New ADODB. 对象

Page 128: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

128

19.5.1 ADO 的主要对象 1. Connection对象 Connection 对象用于建立与数据源的连接。 对象变量声明示例: 2. Recordset对象 该对象表示记录集,用于记录指针的移动和记录的

查找、添加、修改或删除。 对象变量声明示例: Dim rs As New ADODB.Recordset

Page 129: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

129

19.5.1 ADO 的主要对象 3. Command对象 该对象用于对数据源执行指定的命令,如数据的添

加、删除、更新或查询。 对象变量声明示例: Dim cmm As New ADODB.Command

Page 130: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

130

19.5.2 使用 ADO 编程模型的一般步骤 1. 声明 ADO对象变量 Dim cnn As New ADODB.Connection '声明连接对象

Dim rs As New ADODB.Recordset '声明记录集对象

2. 与数据库建立连接 3. 设置记录集相关属性 4. 打开记录集 5. 对记录集进行操作 6. ADO 对象的关闭和释放

Page 131: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

131

19.5.2 使用 ADO 编程模型的一般步骤

ADO的连接方法

方 法 说 明

Dim db As Connection

Set db = New Connection

db.Open 数据源连接字符串

连接数据源。

返回一个连接对象db。

Dim rs As Recordset

Set rs = New Recordset

rs.Open 数据源,连接对象,指针,锁类型

打开记录集。

返回查询结果。

Page 132: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

132

19.5.3 记录集对象的 Open 方法简介 打开记录集时,事先已对记录集的有关属性进行了

设置,使用的是没有参数的 Open 方法。若使用带有参数的 Open 方法,可以在打开记录集的同时设置记录集的相关属性。

语法: 记录集 .Open [ 记录源 , 活动连接 , 游标类型 , 锁

定类型 , 命令类型 ]

Page 133: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

133

19.5.3 记录集对象的 Open 方法简介 记录集的 Open 方法有五个可选参数,其中前四个参数代表了前面已经讨论过的记录集的四个重要属性。最后一个参数“命令类型”与 ADO 数据控件的 CommandType 属性相似,默认值为 adCmdUnknown(未知命令类型),可以将其设置为 adCmdText( SQL 语句)或 adCmdTable(数据库中表的名称),但必须与“记录源”参数的内容相对应。

Page 134: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

134

19.5.4 VB 中访问数据库

VB6.0 提供了 ActiveX 数据对象,在程序中使用 ADO对象之前,首先在声明工程中引用对象库 Microsoft AxtiveX Data Object Library,否则会出现类型为定义的编译错误。因为 ADO 对象 connection,recordset 包含在对象库中,添加步骤如下:

1)启动 Visual Basic集成开发环境,然后选择工程菜单下的【引用】命令,打开引用对话框。

Page 135: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

135

19.5.4 VB 中访问数据库的方法

图 35 引用数据对象2)在列表中,单击Microsoft AxtiveX Data Object 2.6 Library项目左侧的复选框。单击【确定】。

Page 136: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

136

19.5.4 VB 中访问数据库的方法

3) 利用 connection 对象和数据库建立连接,其方法如下:首先声明 connection 对象,既可以先定义一个 connection 类型的对象变量,然后建立该对象的实例,如:Dim cn AS NEW ADODB.ConnectionSet cn=NEW ADODB.Connection又可以在声明的同时创建该对象的实例如:DIM cn AS NEW AODDB.Connection4) 然后应用 connectiosn 对象的 open 方法与数据库建立连接,语法如下:Cn.open ConnectionString,userid,password参数说明:connectionString: 是一个 OLE DB 连接字符串。Userid:建立数据库连接的用户名。Password:建立连接的用户名对应的密码。

Page 137: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

137

19.5.4 VB 中访问数据库的方法

3 .通过 Connection 对象的 open 方法与 SQL SERVER2000 连接有如下两种:1 )通过 ODBC 数据源建立连接。2 )通过 OLE DB 连接字符串连接。4 .通过 Connection 对象的 execute 方法对数据库 操作在建立数据库连接以后,可以通过 Connection 对象的 execute 方法执行在数据库中的记录的查询、修改等操作,操作的返回值是一个记录集。具体方法如下:Set rs=cn.execute(sql_str)其中参数 sql_str 是一个字符串,给出要执行的数据库的 sql语句或者存储过程等。

Page 138: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

138

19.5.4 VB 中访问数据库的方法

5 .通过 Connection 对象的 close 方法关闭数据库连接 在一次数据库操作结束之后,应该使用 Connect

ion 对象的 close 方法关闭数据库的连接,并将这个对象变量从内存中释放。具体方法如下:

Cn.close

Cn=nothing

Page 139: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

139

项目实训1 .实训题目 设计“学生信息管理系统”应用程序。2 .实训目的 ( 1)了解当前主流的数据库访问技术,能够根据项目对性 能、功能的需求选择合适的数据库访问方法。 ( 2)熟悉 ADO 数据库访问技术,掌握数据库操作对 象,并能熟练利用数据库操作对象进行数据库的连接、数据 查询、更新等命令的执行以及结果的处理和数据显示。3 .实训内容及操作步骤 ( 1)学习 Visaul basic 的使用。 ( 2)使用 Connection 对象连接数据库。 ( 3)查询信息,并将查询结果显示到界面上;通过对象进行

数据修改。

Page 140: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

140

本章小结 本章简要介绍了 VB6.0 数据库编程的特征、 VB6.0

支持的数据库种类, VB6.0 支持的数据存取模式包括:数据存取对象 (DAO) 、远程数据对象 (RDO) 、ActiveX 数据对象 (ADO);

介绍了 SQL Server 数据库的 DSN 的配置方法; 详细介绍了用 ADO Data 控件建立数据库应用程序,

数据绑定控件的应用,包括 DataList 控件和 DataCombo 控件的应用、 DataGrid 控件的应用。

举例说明了数据浏览窗体、数据编辑窗体和数据查询窗体的设计方法。

ADO 编程的步骤

Page 141: 19.1 VB 开发数据库概述 19.2  数据库访问控件的应用 19.3  数据绑定控件的应用 19.4  在 ADO Data 控件中使用 SQL 语句进行查询

141

第 19章 结束