
第七章 数据库应用程序设计方法 一、要点解析 本章以成辕直询系统为例,较系统地介绍了数据库应用程序的开发横式和基本方法。通 过本章学习,你应该能够达到如下学习目标: 1,拿据VB数据库应用程序的基本框架。以及SQL操枫数据的方法,旋够编写Is©t Upde,Dete和Select语句,并将这些语句嵌入到VB程序中, 2,理解使用VB数据库引摹操城数据库的方法。以及VB数据对象及数据库访月机制: 能够运用ADO对象进行程序设计 3.了解使用Ex输出报表的方法. 4.了解“成境查询”程序的设计过程。能够读懂并完善这类程序的部分语句: 一、相关知识 数据岸、数据岸管理系统、数据岸系统的假之在数据岸领拔中是比较常见的。所谓数据 库是计算机内有组织,可共享的数据的集合。而数据库管理系统是用户与操作系统之间的数 据管理软件,数据库在建立、运行和维护时由数据库管理系统统一管理、统一控制。在数据 库管理系绕之上有应用系统。例如用B开发数据库应用程序。以优锋端用户使用。因此: 比较严格的说法是数暴岸系统由数据库、数据库管理系统、数据岸应用系统、数据岸管理员 和用户构成。但有时数据库管理系统和数据库系统常常混用。 1.关系数据库概念 数据岸根据数据组织方式的不同而有所不洞,即数据模型不同,较常见的数据模型有层 次横型、料状棱型,关系模型,根据数据模型的不同,所建立的数据库结构也不同。目前使 用最普着的是关系数据库。所谓关系数据库是把数据组成一张或多张二雀表格,即关系表, 多张被此关联的表格群组形成数据库。即关系数据库。 在关系数据库中,数据以数据二维表的形式存在,如表?,1,7,2所示,数据二推表(简 称数据表)由行和列组成。数暴表中每一行称为一个记录,每一列称为一个字段,如表7.1 中有4条记录,每条记录包含5个学段:学号(So),姓名(Snae,性别(Ser),年龄(Sage), 所在系(S4pt)。关系模型要求每个字受数据类型相同,并且是不可再分的,如果某个字段 能唯一地标识这条记录,则这个字段就被称为主关键字或主码(Ky),知上表的学号(So). 表7.】学生基本情况表(Student) Sno Snane Sex Sage Sdept 0001 王磊 男 19 计算机科学系 0002 刘进 女 20 中文系 0003 李泼 男 21 土建系 0001 张建国 女 20 计算机科学系 表7.2选课表(s0) 50 Cno crade 0001 001 82 0002 002 76
1 第七章 数据库应用程序设计方法 一、要点解析 本章以成绩查询系统为例,较系统地介绍了数据库应用程序的开发模式和基本方法。通 过本章学习,你应该能够达到如下学习目标: 1.掌握 VB 数据库应用程序的基本框架,以及 SQL 操纵数据的方法,能够编写 Insert、 Update、Delete 和 Select 语句,并将这些语句嵌入到 VB 程序中。 2.理解使用 VB 数据库引擎操纵数据库的方法,以及 VB 数据对象及数据库访问机制, 能够运用 ADO 对象进行程序设计 3.了解使用 Excel 输出报表的方法。 4.了解“成绩查询”程序的设计过程,能够读懂并完善这类程序的部分语句。 一、相关知识 数据库、数据库管理系统、数据库系统的概念在数据库领域中是比较常见的。所谓数据 库是计算机内有组织、可共享的数据的集合。而数据库管理系统是用户与操作系统之间的数 据管理软件,数据库在建立、运行和维护时由数据库管理系统统一管理、统一控制。在数据 库管理系统之上有应用系统,例如用 VB 开发数据库应用程序,以供终端用户使用。因此, 比较严格的说法是数据库系统由数据库、数据库管理系统、数据库应用系统、数据库管理员 和用户构成。但有时数据库管理系统和数据库系统常常混用。 1.关系数据库概念 数据库根据数据组织方式的不同而有所不同,即数据模型不同,较常见的数据模型有层 次模型、网状模型、关系模型。根据数据模型的不同,所建立的数据库结构也不同。目前使 用最普遍的是关系数据库。所谓关系数据库是把数据组成一张或多张二维表格,即关系表, 多张彼此关联的表格群组形成数据库,即关系数据库。 在关系数据库中,数据以数据二维表的形式存在,如表 7.1、7.2 所示。数据二维表(简 称数据表)由行和列组成,数据表中每一行称为一个记录,每一列称为一个字段,如表 7.1 中有 4 条记录,每条记录包含 5 个字段:学号(Sno),姓名(Sname),性别(Sex),年龄(Sage), 所在系(Sdept)。关系模型要求每个字段数据类型相同,并且是不可再分的,如果某个字段 能唯一地标识这条记录,则这个字段就被称为主关键字或主码(Key),如上表的学号(Sno)。 表 7.1 学生基本情况表(Student) Sno Sname Sex Sage Sdept 0001 王磊 男 19 计算机科学系 0002 刘进 女 20 中文系 0003 李波 男 21 土建系 0004 张建国 女 20 计算机科学系 表 7.2 选课表(sc) Sno Cno grade 0001 001 82 0002 002 76

0003 003 80 0001 002 95 在关系数据库中。我们用到了数据岸、数据表、字段、记录等概念,小结如下: >关系:从用户观点看,一个关系对应通常的一张二维表。 :记录:二推表中的每一行数据为一个记录。如表7.1有4条记录 ”字段:每一列称为一个字段,每个字段都有一个名称。如学生姓名是一个字段,它 的名称是Snne。 数据表:记录的集合构成一个二推表格。称为数据表。如表7,1。 数据库,多个相关的数据表的集合,构成数据库,每个数据库都已文件的形式存他 在磁盘上 ,主玛:如果某个字段能够唯一地标识一条记录,则称此记录为主马,如表7,1中的 学号(Sno》. ”素到:素引是对某字爱的内容核大小进行排序,然后对该字段索引进行快速检素便 可找到相应记录, 2,数据库管理瓜统概念 数据库管理系统(阳5)是用户与操作系统之阿的数据管理软件系统,对数据库的各种 管理与操作都是由数据库管理系统进行的,用户在对数据库进行操作时,只需向W5是出 “需要做什么”的请求,不必了解“如何做”,s根据用月户的请求,完成对数据库的实际 操作。主要包括:创建数据库中的各种对象,如创建新表、素引等:对数据表中的数据进行 增如、修政和到除等:数据库的事务管理、并发控制、故障恢复、完整性控制及安全控制等。 数据库管理系统与数据库是密不可分的,每一种数据库都由某一特定的数据库管理系饶 进行管理,所以数据库管理系饶也常常被称为数据库系统。常用的数据库系统有AC©s8、 SqL.Server、0 racle等. 3.80语言 Sql,是结构化查询语言(Structure Query Language)的缩写,它是关系数据库的标准 语言,简捷易学,功能强大。它可以实现数据查面、数据更新等多种功能。 (1)数据查询 SL提供SECT语句进行数据库的查面。其一般格式为1 SELECT字段列表FM表名ERE条件GROUP BY分组字爱 HAVG分组条件CRBY字段 说明知下: 半段列表:字段可以是一个字段,也可以是多个字段,若是多个字段,字段之间用 延号分隔,如果要遗择某个表中的所有字段,可用“*”代替。 ,子句:用于指定一个或多个表,如果所选的字段来自不同的表。则字段名前 应加表名前缀。 HE能子句:用于构造查面条作。 GP与队VI子句:共同用于对结果集进行分粗过滤处理。它能把在指定字 段列表中有相同值的记录合并成一条记录。 例1.查面student表(表7,1)中的所有学生的学号与姓名。 分析:查询所有学生的学号与姓名,无查询条件。 Sql语句如下: SEL.ECT Sno,Snane FROM student
2 0003 003 80 0004 002 95 在关系数据库中,我们用到了数据库、数据表、字段、记录等概念,小结如下: ➢ 关系:从用户观点看,一个关系对应通常的一张二维表。 ➢ 记录:二维表中的每一行数据为一个记录。如表 7.1 有 4 条记录 ➢ 字段:每一列称为一个字段,每个字段都有一个名称。如学生姓名是一个字段,它 的名称是 Sname。 ➢ 数据表:记录的集合构成一个二维表格,称为数据表。如表 7.1。 ➢ 数据库:多个相关的数据表的集合,构成数据库,每个数据库都已文件的形式存储 在磁盘上 ➢ 主码:如果某个字段能够唯一地标识一条记录,则称此记录为主码,如表 7.1 中的 学号(Sno)。 ➢ 索引:索引是对某字段的内容按大小进行排序,然后对该字段索引进行快速检索便 可找到相应记录。 2.数据库管理系统概念 数据库管理系统(DBMS)是用户与操作系统之间的数据管理软件系统,对数据库的各种 管理与操作都是由数据库管理系统进行的,用户在对数据库进行操作时,只需向 DBMS 提出 “需要做什么”的请求,不必了解“如何做”。DBMS 根据用户的请求,完成对数据库的实际 操作。主要包括:创建数据库中的各种对象,如创建新表、索引等;对数据表中的数据进行 增加、修改和删除等;数据库的事务管理、并发控制、故障恢复、完整性控制及安全控制等。 数据库管理系统与数据库是密不可分的,每一种数据库都由某一特定的数据库管理系统 进行管理,所以数据库管理系统也常常被称为数据库系统。常用的数据库系统有 Access、 SQL Server 、Oracle 等。 3.SQL 语言 SQL 是结构化查询语言(Structure Query Language)的缩写。它是关系数据库的标准 语言,简捷易学,功能强大。它可以实现数据查询、数据更新等多种功能。 (1)数据查询 SQL 提供 SELECT 语句进行数据库的查询,其一般格式为: SELECT 字段列表 FROM 表名 WHERE 条件 GROUP BY 分组字段 HAVING 分组条件 ORDER BY 字段 说明如下: ➢ 字段列表:字段可以是一个字段,也可以是多个字段,若是多个字段,字段之间用 逗号分隔,如果要选择某个表中的所有字段,可用“*”代替。 ➢ FROM 子句:用于指定一个或多个表,如果所选的字段来自不同的表,则字段名前 应加表名前缀。 ➢ WHERE 子句:用于构造查询条件。 ➢ GROUP BY 与 HAVING 子句:共同用于对结果集进行分组过滤处理。它能把在指定字 段列表中有相同值的记录合并成一条记录。 例 1.查询 student 表(表 7.1)中的所有学生的学号与姓名。 分析:查询所有学生的学号与姓名,无查询条件。 SQL 语句如下: SELECT Sno,Sname FROM student

查淘结果如表7,3所示。 表7.3查淘结果 Soo Snane 0001 王磊 0002 刘进 0003 李波 0001 张建国 此操作在关系数暴,中称投影操作,投影操作返回二维表格的若干圳: 例2.查面student表中所有计算机科学系的学生。 分析:应用E距子句构造查询条件,使其满足能够查询Student表中所有计算机科学 系的学生。 Ssql.语句如下: SL.FCT。FROM WHERE student..Sdept='计算机料学系 查询站果如表7,4所示。 表7.4查陶结果 Sno Snane Sex Sage Sdept 000L 王磊 男 19 计算机科学系 0001 张建国 女 20 计算机科学系 此操作在关系数暴,中称选择燥作,选择操作返回二维表格的若干行. 例3.查海选修了02号课程的学生姓名和成绩,并按由高到低排列, 分析:学生姓名在表student中,成绩在表紧中,显然所需信皂需要从两个表中获得. 按分数由高到低排列需要用关键字DESC反之,用ASC(默认), S刘L语句如下: SELECT student.Snane,se.grade FROV student,sc VHERE student.Sno-sc.Sno and sc.Cno="002" ORDER BY grade DESC 查询结果如表7,5所示。 表7,5查询结果 Sname grade 张建国 95 刘进 76 此操作在关系数据库中称连接操作,连接操作是通过某个关键字将两个表连接起米。本 例中是通过Sno关健字将表student和x连接起来.在SELECT语句中,特别要指明某个字 段来源于螺个表,如student.Sae表示Snae这个字段来源于student表, (2)数据更新 S网L,中数据更新包括橘入数据、修改数据和刷除数据三种语句。 ①插入数据 语句格式为知 NSERT INTO表名(属性列)VLES(值列)
3 查询结果如表 7.3 所示。 表 7.3 查询结果 Sno Sname 0001 王磊 0002 刘进 0003 李波 0004 张建国 此操作在关系数据库中称投影操作,投影操作返回二维表格的若干列。 例 2.查询 student 表中所有计算机科学系的学生。 分析:应用 WHERE 子句构造查询条件,使其满足能够查询 Student 表中所有计算机科学 系的学生。 SQL 语句如下: SELECT * FROM WHERE student.Sdept= '计算机科学系' 查询结果如表 7.4 所示。 表 7.4 查询结果 Sno Sname Sex Sage Sdept 0001 王磊 男 19 计算机科学系 0004 张建国 女 20 计算机科学系 此操作在关系数据库中称选择操作,选择操作返回二维表格的若干行。 例 3.查询选修了 002 号课程的学生姓名和成绩,并按由高到低排列。 分析:学生姓名在表 student 中,成绩在表 sc 中,显然所需信息需要从两个表中获得。 按分数由高到低排列需要用关键字 DESC,反之,用 ASC(默认) 。 SQL 语句如下: SELECT student.Sname,sc.grade FROM student,sc WHERE student.Sno=sc.Sno and sc.Cno= "002" ORDER BY grade DESC 查询结果如表 7.5 所示。 表 7.5 查询结果 Sname grade 张建国 95 刘进 76 此操作在关系数据库中称连接操作,连接操作是通过某个关键字将两个表连接起来。本 例中是通过 Sno 关键字将表 student 和 sc 连接起来。在 SELECT 语句中,特别要指明某个字 段来源于哪个表,如 student.Sname 表示 Sname 这个字段来源于 student 表。 (2)数据更新 SQL 中数据更新包括插入数据、修改数据和删除数据三种语句。 ①插入数据 语句格式为: INSERT INTO 表名(属性列)VALUES(值列)

例4.在选课表中插入一条透课信息:学号为0005的学生选了003号课程,成锁为85. SqL语句如下: INSERT INTO0sc(Sno,Ca,grade)VALUES('0005°,'00g','85°) ②修改数据 语句格式为 PDAE表名SET列名-值,,HE距条件 注意:如果条件为空,则修改所有的字及。 例5.将学生表中学号为0002的学生名字改为赵月,所属系改为“电子信息工程系”。 L语句如1下: P0 ATE student SET Snane='赵月',Sdept=‘电子信息工程系'E经Sno=0002 同别除数据 语句格式为: DELETE FROM表名E条件 注意:如果条件为空,则酬除所有的记录, 例6.到章学号为0002的同学选002号课的记录。 SqL语句如知下: DELETE FROM sc WHERE sno='0002'and eno='002' 例7.酬除计算机科学系同学所有的遗课记录, 在选课表sc中,没有计算机料学系的信息,必须在student表中查询。这时需要用到 酬问N所带的子查询, SqL语句如下: DEL.ETE FROM se WHERE sno IN (SELECT Sno FROM student WHERE Sdept·'计算机料学系' 二、本章重要知识点 1.三种数据库类型 B将数据库分为三种类型:本地数据库、外部数据库、远程数据库 本地数据库:主要指licrosoft Access数据岸。 外部数据库,是指采用ISAM的数据库,如dBas0,Foxpro,Paradox,Excel等, 远程数据库;指SQL Server Oracle2等大型数据库, 2.V阳数据库访问机制 B通过数据引繁访问数据牌 数据草:数据库应用程序属于一种套常典型的前后台软件结构,前台是我们的VB 程序,后台则是数据库管理系统,如SQ[Server。而前后台通信的主要机制称为爱据库引 摹。 常用的数暴岸引摩有三种:Jet引聚、0(、0LEB. 3.数据对象 B采用面向对象技术,将三种数据库引聚封装成三种访月数据库的对象,即DO,D0, ADO. D0对象:可以使用Jet引擎和0心C两种方式访付数据库。 0对象:一般采用0C访问数据库。 4
4 例 4.在选课表中插入一条选课信息:学号为 0005 的学生选了 003 号课程,成绩为 85。 SQL 语句如下: INSERT INTO sc(Sno,Cno,grade)VALUES('0005', ' 003', '85') ②修改数据 语句格式为: UPDATE 表名 SET 列名=值, WHERE 条件 注意:如果条件为空,则修改所有的字段。 例 5.将学生表中学号为 0002 的学生名字改为赵月,所属系改为“电子信息工程系”。 SQL 语句如下: UPDATE student SET Sname='赵月', Sdept= '电子信息工程系'WHERE Sno= '0002' ③删除数据 语句格式为: DELETE FROM 表名 WHERE 条件 注意:如果条件为空,则删除所有的记录。 例 6.删除学号为 0002 的同学选 002 号课的记录。 SQL 语句如下: DELETE FROM sc WHERE sno= '0002'and cno='002' 例 7.删除计算机科学系同学所有的选课记录。 在选课表 sc 中,没有计算机科学系的信息,必须在 student 表中查询。这时需要用到 谓词 IN 所带的子查询。 SQL 语句如下: DELETE FROM sc WHERE sno IN (SELECT Sno FROM student WHERE Sdept = '计算机科学系' 二、本章重要知识点 1.三种数据库类型 VB 将数据库分为三种类型:本地数据库、外部数据库、远程数据库 本地数据库:主要指 Microsoft Access 数据库。 外部数据库:是指采用 ISAM 的数据库,如 dBase,Foxpro,Paradox,Excel 等。 远程数据库:指 SQL Server Oracle DB2 等大型数据库。 2.VB 数据库访问机制 VB 通过数据引擎访问数据库 数据引擎:数据库应用程序属于一种非常典型的前后台软件结构,前台是我们的 VB 程序,后台则是数据库管理系统,如 SQI Server。而前后台通信的主要机制称为数据库引 擎。 常用的数据库引擎有三种:Jet 引擎、ODBC、OLE DB。 3.数据对象 VB 采用面向对象技术,将三种数据库引擎封装成三种访问数据库的对象,即 DAO、RDO、 ADO。 DAO 对象:可以使用 Jet 引擎和 ODBC 两种方式访问数据库。 RDO 对象:一般采用 ODBC 访问数据库

A0对象:主要采用LEB访月数据库,也支持GC访问,但需要经过0EB转接, 4.AD0对象棋型 A0是一种基本0LE阳的模型。 A0对象模型共包含7个对象.它们是Connectica、Ccnd、Recordset,Field,. Paraneter,Property和Error,其中最常用的是前4个对象。 5.数据库应用程序的大致框架 将SL语句帐入到VB语言中,采用A0数据对象横型开发数据库应用程序。 (1)选接后台数据库 在VB应用程序中主要用C©nection对象连接后台数据库,基本方法是: ·首先声明并创建对象 Din ADOcn As Conneetion ·声明对象 Set ADOcn New Connectio ·创建新对象 或上述两条语句直接写成 Din ADOcn As New Comnection ·建立数据库连接 一般通过下列语句完成与数据库的违接“ A0en.0en连接字符串 语句中的连接字符串可以通过自动生成“连接字符串“的方法来实暖,见教材184一 185页. (2)对数据库中的数据表进行更新操作 更新操作包括增加、别除和修政,这些语句的特点是没有返回的结果集,它们仅仪向数 据岸发出一条更新命令。可以利用Connection对象的execute方法来完成。语法知下: A0kn.Execute SQL语句字符串 为了提高程序的可读性和易维护性,通常采用如下方法完成上述操作: ·声明一个字符串变量 Din strSQL As String '拼写nsert、Delete,pdata结构化查面语句 例如: strSQL="Delete Fron学生成绩表 strSQL."str5gL+"here学号-·+·+Coabol.Text+'“ ”执行S刘语句 ADOcn.Execute strSQL (3)对数郭表进行查询(Sel0ct)操作 记录集Recordset对象是数据表的查询结果,通过使用Recordset进行Select语句的 操作。基本使用方法如下 ”声明一个新的Recordset对象 Din ADOrs As New Recordset 与DO蛙接对象建立关联 ADOrs.AetiveComnectfon ADOcn "执行Select操f作 Or%.0em“Select*From学生成境表” 5
5 ADO 对象:主要采用 OLE DB 访问数据库,也支持 ODBC 访问,但需要经过 OLE DB 转接。 4.ADO 对象模型 ADO 是一种基本 OLE DB 的 模型。 ADO 对象模型共包含 7 个对象。它们是 Connection、Command、Recordset、Field、 Parameter、Property 和 Error。其中最常用的是前 4 个对象。 5. 数据库应用程序的大致框架 将 SQL 语句嵌入到 VB 语言中,采用 ADO 数据对象模型开发数据库应用程序。 (1) 连接后台数据库 在 VB 应用程序中主要用 Connection 对象连接后台数据库,基本方法是: ⚫ 首先声明并创建对象 Dim ADOcn As Connection '声明对象 Set ADOcn = New Connection '创建新对象 或上述两条语句直接写成 Dim ADOcn As New Connection ⚫ 建立数据库连接 一般通过下列语句完成与数据库的连接“ ADOcn.Open 连接字符串 语句中的连接字符串可以通过自动生成“连接字符串 “的方法来实现,见教材 184- 185 页。 (2)对数据库中的数据表进行更新操作 更新操作包括增加、删除和修改,这些语句的特点是没有返回的结果集,它们仅仅向数 据库发出一条更新命令。可以利用 Connection 对象的 execute 方法来完成。语法如下: ADOcn.Execute SQL 语句字符串 为了提高程序的可读性和易维护性,通常采用如下方法完成上述操作: '声明一个字符串变量 Dim strSQL As String '拼写 Insert、Delete、Updata 结构化查询语句 例如: strSQL = "Delete From 学生成绩表" strSQL = strSQL + "Where 学号=" + "'+Combol.Text+'" '执行 SQL 语句 ADOcn.Execute strSQL (3) 对数据表进行查询(Select)操作 记录集 Recordset 对象是数据表的查询结果,通过使用 Recordset 进行 Select 语句的 操作。基本使用方法如下: '声明一个新的 Recordset 对象 Dim ADOrs As New Recordset 与 ADO 链接对象建立关联 ADOrs.ActiveConnection = ADOcn '执行 Select 操作 ADOrs.Open "Select*From 学生成绩表

”关闭记录集对象 ADOrs.Close (4)显示记录集中的数据 ①在TextBox中显示 Textl.Tert·0rs.Fields('学号) ②读取到变量中 Dim strNo As String strNo=A0rs.F1eld(学号门 Text1.Text strNo @在Grid控件中以二锥表的形式显示 采用SFlexGrid控件进行显示,一般步律是: ·清空数据 ·设置标题栏 ·打开记录集 使用稀环将记录集中的数据需加到Gid中去。 例8.假设在d盘根目录中存在一个名为“udent.md曲”的Access数据库,其中包含一 张名为“学生基本情况”的数据表,表中存故了学生的基本信息,如图1所示。 现在要求利用VB编写一个数据库记录增加程序,程序的运行界面如图2所示,基本亚 辑是:分别在Txtl,Te2,Tex心中输入学号、姓名、籍贯信息,然后点击“保存”按细 (Commandl)将该记录添如到数据岸中。如果数据岸中已经存在相同的学号信息,则程序应 提示用户“记录已存在,请重新输入”,并将焦点置于Txt1上,等待用户像改或重新输入。 当点击退出核组(Command.2时关闭本窗体。 ■学生基本指记一常表:表 回x图 字号 姓名 植费 200u001 超小 山东 2003000 手容 天建 200100 防超 广厂东 2003044 孙弹 匹川 米 记录:4 1卡共有记录数:4 图I用ccs创建的学生基本情况数据表
6 '关闭记录集对象 ADOrs.Close (4)显示记录集中的数据 ①在 TextBox 中显示 Text1.Text = ADOrs.Fields("学号") ②读取到变量中 Dim strNo As String strNo = ADOrs.Field("学号") Text1.Text = strNo ③在 Grid 控件中以二维表的形式显示 采用 MSFlexGrid 控件进行显示,一般步骤是: ⚫ 清空数据 ⚫ 设置标题栏 ⚫ 打开记录集 ⚫ 使用循环将记录集中的数据添加到 Grid 中去。 例 8.假设在 d 盘根目录中存在一个名为“student.mdb”的 Access 数据库,其中包含一 张名为“学生基本情况”的数据表,表中存放了学生的基本信息,如图 1 所示。 现在要求利用 VB 编写一个数据库记录增加程序,程序的运行界面如图 2 所示,基本逻 辑是:分别在 Text1、Text2、Text3 中输入学号、姓名、籍贯信息,然后点击“保存”按钮 (Command1)将该记录添加到数据库中。如果数据库中已经存在相同的学号信息,则程序应 提示用户“记录已存在,请重新输入”,并将焦点置于 Text1 上,等待用户修改或重新输入。 当点击退出按钮(Command2)时关闭本窗体。 图 1 用 Access 创建的学生基本情况数据表

。W加学生量 回x 清杭入竿生的基本值息 字号 2003005 姓名 修贯 保存 退出 图2查询程序运行界面 Private ADOen As Nev Connection Private Sub Forn_LoadO 01 "Provider-Microsoft.Jet.OLEDB.4.0:Data Source-d:\student.ndb" End Sub Private Sub Comndl_Click() Din strSql.As [2] Dim ADOrs As New Recordset ADOrs.ActiveConnection =_[3] strSql.。“Select*frca学生基木情况一表here学号-”+”·”+[4】+··“ ADOrs.Open [5] If Not ADOrs.EOF Then Msg“学号己经存在,请重新输入!“,粥0y,“信息提示 Textl.SetFocus Else str5q.·"1 nsert Into学生基本情况一览表(学号,姓名,籍贯)” strq.=strS8+”Yalu0s('”+Tewt1+”‘,”+T0xt2+“,”+Text3 [6】Execute strSL sgox“添如成功:”,OKOnly,.“信息提示 71 End Sub Private Sub Command2_Click() Unload Me End Sub 答案 [1】aB0en.0pen [2]string [3)】Aoen 7
7 图 2 查询程序运行界面 Private ADOcn As New Connection Private Sub Form_Load() [1] "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\student.mdb" End Sub Private Sub Command1_Click() Dim strSQL As [2] Dim ADOrs As New Recordset ADOrs.ActiveConnection = [3] strSQL = "Select * from 学生基本情况一览表 Where 学号=" + " ' " + [4]+ " ' " ADOrs.Open [5] If Not ADOrs.EOF Then MsgBox "学号已经存在,请重新输入!", vbOKOnly, "信息提示" Text1.SetFocus Else strSQL = "Insert Into 学生基本情况一览表(学号,姓名,籍贯) " strSQL = strSQL + " Values ( '" + Text1 + " ','" + Text2 + "','" + Text3 + " ')" [6] .Execute strSQL MsgBox "添加成功!", vbOKOnly, "信息提示" [7] End Sub Private Sub Command2_Click() Unload Me End Sub 答案: [1] ADOcn.Open [2] string [3] ADOcn

[4】Text1 【5 strSQ 【6]Aoen [7】End If 6,数帮控件、可视化数据管理器、靓表设计的基本景念 见教材, 二、典型例题 己知SQL Server数据库管理系统中存在名称为“学生”的数据库,其中的“uden心s” 数据表的结构及初始记录如表I所示。要求使用ADO对象和SF日Gid控件设计数据库 列表显示程序。程序的设计界面和运行结果如图2、图3所示。 表1 学号 姓名 专业 2004001 张红 软件专业 2004003 李强 会计专业 2004002 王围 软件专业 。连报库好习 ☒ 关间 图2 8
8 [4] Text1 [5] strSQL [6] ADOcn [7] End If 6.数据控件、可视化数据管理器、报表设计的基本概念 见教材。 二、典型例题 已知 SQL Server 数据库管理系统中存在名称为“学生”的数据库,其中的“students” 数据表的结构及初始记录如表 1 所示。要求使用 ADO 对象和 MSFlexGrid 控件设计数据库 列表显示程序。程序的设计界面和运行结果如图 2、图 3 所示。 表 1 学号 姓名 专业 2004001 张红 软件专业 2004003 李强 会计专业 2004002 王丽 软件专业 图 2

。连援数美用线习 ☒ 号■ 业 200001条红 专业7 2004002王田 软作专业 20040031 合计专业 关闭 图3 程序如下,请补充完整。 '声明对象变量ADOm,用于创建与数据库的连接 Private ADOcn As Connection eadFromTable过程 Private Sub ReadFrom'Table() Dim strtmp As String Dim ADOrs As [1 ADOrs.ActiveConnection ADOcn ADOrs Open [21 MSFlexGridl.Clear MSFlexGridl.Rows=0 MSFlexGridl Cols=3 如tmp=·学号”+vbTab+"姓名”◆vbTb+专业 MSFlexGridl.Addltem strtmp Do While Not ADOrs EOF tmp=AD0"学号")+hT响+ADOm"姓名)+bTb+ADOr”专业) MSFlexGridl.Addltem strtmp [1 Loop MSFlexGridl FixedCols=0 MSFlexGridl.FixedRowsI End Sub Private S由Form_Load) 定义数据库连接字符申 9
9 图 3 程序如下,请补充完整。 '声明对象变量 ADOcn,用于创建与数据库的连接 Private ADOcn As Connection 'ReadFromTable 过程 Private Sub ReadFromTable() Dim strtmp As String Dim ADOrs As [1] ADOrs.ActiveConnection = ADOcn ADOrs.Open [2] MSFlexGrid1.Clear MSFlexGrid1.Rows = 0 MSFlexGrid1.Cols = 3 strtmp = "学号" + vbTab + "姓名" + vbTab + "专业" MSFlexGrid1.AddItem strtmp Do While Not ADOrs.EOF strtmp = ADOrs("学号") + vbTab + ADOrs("姓名") + vbTab + ADOrs("专业") MSFlexGrid1.AddItem strtmp [ 3] Loop MSFlexGrid1.FixedCols = 0 MSFlexGrid1.FixedRows = 1 End Sub Private Sub Form_Load() '定义数据库连接字符串

Dim strDB As String 用于连接SQL Sen▣数据库,其中 Server为服务器名称 UerD为登录账号 Pwad为登录口令 Daab为具体的数据库名 本DB=Provider-SQL.OLEDB:LSF:User ID-Password-;Dartabase-学生" 如果还没有建立与数据库的连接,则用以下代码创建。 IfADOcn Is Nothing Then Set ADOcn [4] ADOcn Open [5] 连接SQLServer数据库 End If RendFrom Table '调用过程最示udns表中的记录 End Sub Private Sub Command1_Click() Unload Me End Sub 答案: [I]New Recordset: 2]lact◆from students order by学号": 3]ADOrs MoveNextr [4]New Connection: [5]strDB
10 Dim strDB As String '用于连接 SQL Server 数据库,其中: 'Server 为服务器名称 'User ID 为登录账号 'Password 为登录口令 'Database 为具体的数据库名 strDB = "Provider=SQLOLEDB;LSF;User ID=sa;Password=;Database =学生" '如果还没有建立与数据库的连接,则用以下代码创建。 If ADOcn Is Nothing Then Set ADOcn = [4] ADOcn.Open [ 5] '连接 SQL Server 数据库 End If ReadFromTable '调用过程显示 students 表中的记录 End Sub Private Sub Command1_Click() Unload Me End Sub 答案: [1]New Recordset; [2]"select * from students order by 学号"; [3]ADOrs.MoveNext; [4]New Connection; [5]strDB