1、2018/11/20,1,第10章 Visual Basic与数据库, 概述 数据管理器 ADO数据控件 数据及数据绑定控件 SQL简介 报表制作 应用举例,http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.51xi
2、u.org/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.gz- http:/www.gz- http:/www.gz- http:/ http:/ http:/ 概述,数据库是一组特定数据的集合,是按照一定方式组织、存储以及管理存储在计算机内的相关数据的集合。 数据库中数据的组织形式有多种,按数据库所采用的数据模型分类,可分为:基于层次模型的数据库、基于网状模型的数据库、基于关系模型的数据库。 关系数据库,就是把数据表示成表的集合,通过建立各表之间的关系来定义结构的一种数据库。数据库以文件的形式保存于存储器中,一个数据库文件可以包含
3、一个、也可以包括多个组成这个数据库的文件 。,2018/11/20,3,10.1 概述数据库,表: 在关系数据库中,一个关系就可以表示为一个表,是关系数据库的基本组成。表的作用是保存数据库中的数据。 假设用于存储学生相关信息的数据库是由学生学籍信息表、成绩表和选课表组成的学生数据库(XS.mdb),那么整个学生数据库的结构如图所示。,2018/11/20,4,学生数据库结构,2018/11/20,5,关键字 : 同一个表中的记录是不重复的、唯一的。这可以通过设置某一字段为主关键字值来保证这种唯一性。为区别表中的每一条记录,可以将某一字段设为主关键字,作为一个记录的唯一标识。 排序: 对于一个数
4、据表,可以按某一字段对表中所有的记录进行升序或降序排列。 索引: 数据查找是数据库操作的一项重要运算,为提高查找效率,常常通过建立索引来达到查询目的。索引是基于表建立的单独的物理数据库结构,是一种特殊类型的表,其中包含关键字段的值和指向实际记录位置的指针,这些值与指针按照特定的顺序存储。 视图: 视图是在表的基础上建立的,它是一个虚拟表,但它的各项操作与真实的表是相同的。目的在于简化数据的表达。 数据库是包含了数据表的一个或多个文件的文件。Visual Basic支持多种数据库,常用的、也是缺省的数据库是.mdb文件,即Microsoft Access数据库。,2018/11/20,6,10.
5、1 概述数据访问对象模型,数据访问对象(Data Access Objects ,即DAO) 远程数据对象(Remote Data Objects,即RDO) ActiveX数据对象(ActiveX Data Objects,即ADO),返回,http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/
6、 http:/ http:/ http:/ http:/ http:/www.51xiu.org/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.gz- http:/www.gz- http:/www.gz- http:/ http:/ http:/ 数据管理器创建Access 格式数据库,在VB工作环境中,选择“外接程序/可视化数据管理器”,出现右图所示界面。,选择“文件/新建/Microsoft Access(M)/Version 7.0 MDB” ,打开左图4所示对话框。,2018/11/20,8,在上图所示对话框中选择合适的路径
7、与数据库名称并单击“保存”按钮(我们将此数据库命名为stu.mdb并将其保存在D盘),则出现如右图5所示界面。,在左图所示数据库窗口中单击鼠标右键并单击“新建表”命令,即出现表结构对话框。,http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:
8、/ http:/www.51xiu.org/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.gz- http:/www.gz- http:/www.gz- http:/ http:/ http:/ 数据管理器数据窗体设计器,使用可视化数据管理器自带的数据窗体设计器,使我们能在最短时间内设计出符合要求的数据操作界面窗体。具体过程为:在如上图所示界面中选择“实用程序/数据窗体设计器(F)”,出现图中所示“数据窗体设计器”对话框 。,2018/11/20,11,创建窗体:,窗体运行界面,返回,2018/11/20,12,10.3 ADO数据控
9、件ADO的对象与集合,ADO有7个对象: Connection: 通过连接访问数据源。 Command:从连接到的数据源获取所需数据的命令信息。 Parameter:与命令对象有关的参数。 Recordset:获得的一组记录组成的记录集。 Field:包含在记录集中某个字段的信息。 Property:ADO控件属性信息 Errors:访问数据时,从数据源返回的错误信息。 ADO的4个集合为: Fields、Properties、Parameters、Errors。,2018/11/20,13,10.3 ADO数据控件添加ADO,ADO是作为可选项集成在VB开发环境中的,在使用ADO之前,必须首
10、先完成ADO的添加。实际使用时,在完成项目创建后,需要选择“工程/引用”命令,出现如图10.14所示选项,在列表框中选中“Microsoft ActiveX Objects Data2.6 Library”,单击“确定”按钮,这样就为项目完成了ADO的添加。,2018/11/20,14,10.3 ADO数据控件ADO应用,例:启动Access 2003创建名为学生.mdb的数据库作为数据源,在该库中建立含有“学号、姓名、性别、班级、联系方式、家庭所在地”字段的名为xsxx(学生信息)的表。,ADO应用窗体布局,ADO应用运行界面,返回,2018/11/20,15,10.4 数据及数据绑定控件,
11、数据控件分为提供数据的数据源控件和使用数据的数据识别/绑定控件。将此两种控件结合可以完成数据的显示和处理,如果数据识别/绑定控件没有数据源,就无法自动实现数据的显示和处理工作。,http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http
12、:/www.51xiu.org/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.gz- http:/www.gz- http:/www.gz- http:/ http:/ http:/ 数据及数据绑定控件Data控件,Data 控件是Visual Basic内置的控件,也是在Visual Basic中访问数据库的重要控件,通过对其属性进行设置,可以将数据控件与不同结构的数据库及其数据表建立联系,从而对表中记录进行读、写、查询等操作。 在工具箱中显示如:窗体中的Data控件,2018/11/20,17,1 Connect属性 例1:连接A
13、ccess数据库(默认的)。 Connect =”Access” 图10.19 Data控件的属性对话框 2DatabaseName属性 该属性用于确定数据控件所使用的数据库是哪一个。 例2:连接Access的一个数据库。 DatabaseName =”D:stu.mdb” 3RecordSource属性 该属性用于确定所要访问的数据表的名称。 例3:指定访问stu.mdb中的stutable。 RecordSource =”stutable” 如果要选择表中所有女生的数据,则: RecordSource =”Select * Form stutable Where 性别=女 ”,2018/1
14、1/20,18,10.4 数据及数据绑定控件常用数据绑定控件,Data控件可以操作库表,但本身无法显示库中的相关数据。为此,需将能显示数据的控件与Data控件相关联,从而使这些控件成为Data控件的数据绑定控件。 具体实现一般控件与Data控件完成数据绑定过程的步骤如下: 1创建数据源:运行VB主程序,选择“文件/新建/标准EXE/打开”,以默认窗体Form1为基础添加如右图所示各控件。,2018/11/20,19,2设置各控件属性值:将前一图中所示各Text控件的Text属性值设置为空,Data控件的Caption属性值设置为空,DatabaseName属性值为所选数据库及其路径。运行即可得
15、左图所示运行结果。在此基础上可以完成添加记录、删除记录、保存记录、退出等操作。,2018/11/20,20,10.4 数据及数据绑定控件专用数据绑定控件,1ADODC控件 ADODC控件的常用属性主要有: ConnectionString属性 例如上图中的ConnectionString属性设置为: Adodc1.ConnectionString = “Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=“ & App.Path & “xueshengxinxi.mdb“ RecordSource
16、属性 返回或设置语句,或者返回一个记录集的查询。它可能包含一条语句或一个表格名称,例如上图中的RecordSource属性设置为:Adodc1.RecordSource = “Select * from xsxx“ Recordset属性 返回或者对下一级ADO Recordset对象的引用。如在本例中: Text1.Text = Adodc1.Recordset.Fields(“学号“).Value BOF属性 指示当前记录位于Recordset对象的第一个记录之前。 EOF属性 指示当前记录位于Recordset对象的最后一个记录之后。,2018/11/20,21,2DBGrid控件(数据
17、网格控件) DBGrid控件即数据网格控件,可以用来以表格形式显示数据库表中的数据。,DBGrid控件布局,运行结果,2018/11/20,22,DBGrid的常用属性主要有:,DataSource属性 可以将DBGrid的DataSource属性设置为一个ADO控件,以便将ADO控件所连接的数据源中的数据自动填充至DBGrid的表格中。 AllowAddNew属性 设置或者返回一个值,表明用户是否能够向与DBGrid控件连接的Recordset对象中添加新纪录。 AllowArrows属性 设置或返回一个值,该值决定控件是否用箭头键对网格定位。 AllowDelete属性 设置或返回一个值,
18、指出用户可否从与DBGrid控件连接的Recordset对象中删除记录。 AllowUpdate属性 设置或返回一个值,提示用户可否修改DBGrid控件中的数据。,2018/11/20,23,3DBCombo控件(数据组合框)与DBList控件(数据列表框) DBCombo控件DBList控件都是数据绑定列表框,都可以自动从附加数据源中的字段填充数据,且可以选择性地更新另一个数据源中的相关表的字段。这两个控件功能相同,但DBCombo控件是组合框。,2018/11/20,24,DBCombo控件主要属性设置:,RowSource属性 取值为Adodc1。将Adodc1与DBCombo控件绑定。
19、 Style属性 取值为2-dbcDropdownList。表示设置组合框类型,不允许用户输入。 ListField属性 取值为所列字段名称。 DBList控件的主要属性设置: RowSource属性 取值为Adodc2。将Adodc2与DBList控件绑定。 ListField属性 取值为所列字段名称。,http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- ht
20、tp:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.51xiu.org/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.gz- http:/www.gz- http:/www.gz- http:/ http:/ http:/ 数据及数据绑定控件数据识别/绑定控件,数据识别/绑定控件为数据输入、数据编辑、数据查看创建相关界面。这类控件都具有DataSource和DataField属性,目的在于指名所使用的数据源及相应字段。 这类控件有DataGrid
21、、DataList、DataCombo、Hierarchical FlexGrid等控件。这些控件在VB工作环境中的工具箱上是看不到的,使用之前需要用户选择“工程/部件”命令,在出现的“部件”对话框中选择“Microsoft ADO Data Control6.0(OLEDB)”,同时为方便使用,将“Microsoft DataList Control6.0(OLEDB)、Microsoft DataGrid Control6.0(OLEDB)、“Microsoft Chart Control6.0(OLEDB)”等控件也一并选中,单击“确定”按钮,在工具箱中会出现相应的图标。使用时,用鼠标直
22、接选取即可。,返回,2018/11/20,26,10.5 SQL简介,SQL是结构化查询语言(Structure Query Language)的简称。 SQL是一种介于关系代数和关系演算之间的结构化查询语言,但它的作用远不只是完成数据查询。这是一个功能强大的、通用的数据库语言,它是集数据定义、查询、操纵及控制功能于一体的数据库语言。,10.5 SQL简介SQL语言的特点 SQL语言具有综合统一的特点。 SQL语言是一种高度的非过程化的语言。 SQL语言采用了面向集合的操作方式。 SQL语言简捷,易学易用。 SQL语言以同一种语法结构提供了两种使用方式。,2018/11/20,27,10.5
23、SQL简介SQL语言对数据库的操作,一数据定义语言(Data Definition Language,DLL): 1创建基本表 建立数据库最重要、最基础的一步就是创建一些基本表,SQL语言完成这一操作的命令格式为: CREATE TABLE (列级完整性约束条件, 列级完整性约束条件, ; 例1:建立一个由学号、姓名、性别、年龄、班级5个字段组成的学生信息表,其中学号不能为空且取值唯一,姓名取值也唯一。 CREATE TABLE 学生信息表 (学号 CHAR(5) NOT NULL UNIQUE,姓名 CHAR(8) UNIQUE,性别 CHAR(2),年龄 INT,班级 CHAR(10);
24、上述语句执行完毕,就建立了一个新的名为“学生信息表”的空表。,2018/11/20,28,2修改基本表 随着使用要求的变化,已建好的基本表有时需要作一些修改,SQL所使用的命令及其格式为: ALTER TABLEADD完整性约束DROPMODIFY; 例2:向学生信息表增加“联系方式”列,数据类型为整型。 ALTER TABLE 学生信息表 ADD 联系方式 INT; 语句执行完毕,即向学生信息表增加了名为“联系方式”的一个字段。 例3:将“联系方式”中的数据类型改为字符型。 ALTER TABLE 学生信息表 MODIFY 联系方式 CHAR(30); 例4:删除姓名取唯一值的约束。 ALT
25、ER TABLE 学生信息表 DROP UNIQUE(姓名); 3删除基本表 命令格式:DROP TABLE 例5:删除学生信息表 DROP TABLE 学生信息表; 语句执行完毕,学生信息表的内容及结构全部被删除,且在此表基础上建立的其他表也易丢失。所以,用此命令时需格外谨慎。,2018/11/20,29,二数据查询语言(Data Query Language,DQL):对数据的查询是数据库的核心操作。完成查询操作的动词是SELECT,其构成的语句具有灵活的使用方式并可以实现多种查询功能。SQL语言完成查询功能的语句格式为: SELECT ALL|DISTINCT,FROM,WHEREGRO
26、UP BY HAVINGORDER BY ASC|DESC; 可见该语句的基本格式为:SELECTFROMWHERE。即从FROM子句所指定的表中,按照WHERE子句给出的条件,查询SELECT子句中所指的项目。 假设例1中创建的学生信息表含有若干条记录,对其进行例6例8的操作。 例6:显示学生名单 SELECT 姓名 FROM 学生信息表; 例7:显示所有学生的信息 SELECT * FROM 学生信息表; 例8:显示每个学生的姓名、年龄 SELECT 姓名,年龄 FROM 学生信息表;,2018/11/20,30,三数据操纵语言(Data Manipulation Language,DML
27、):对数据的操纵主要包括了对数据的检索和更新两类操作。其中数据的更新包含了插入数据、修改数据、删除数据3种操作。使用的动词有:INSERT、UPDATE、DELETE。 1插入数据 命令格式:INSERT INTO (,) VALUE (表达式值) 例9:向学生信息表添加一条学号:33333,姓名:启明星,性别:男,年龄:20,班级:机械0701班。 INSERT INTO 学生信息表 (学号,姓名,性别,年龄,班级) VALUE (33333, 启明星,男,20,机械0701班) ; 2修改数据 命令格式:UPDATE SET =,=WHERE; 用此命令可以完成表中某个记录的某项数据修改,
28、也可以完成表中所有记录的某一列数据的一次性修改。 例10:将学号为33333的学生的年龄改为21岁。 UPDATE 学生信息表 SET 年龄=21 WHERE 学号=33333; 例11:将学生信息表中所有学生的年龄都增加1岁。 UPDATE 学生信息表 SET 年龄=年龄+1; 3删除数据 命令格式:DELETE FROM ; 例12:删除学号为33333的学生记录。 DELETE FROM 学生信息表 WHERE 学号=33333; 例13:删除学生信息表中的所有记录,使之成为仅保留表结构的空表。 DELETE 学生信息表;,http:/ http:/ http:/ http:/ http
29、:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.51xiu.org/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.gz- http:/www.gz- http:/www.gz- http:/ http:/ http:/
30、 Control Language,DCL):包括了对基本表、视图等对象的授权、完整性规则描述、事务开始与结束等控制语句。其动词有:GRANT、REVOKE。 1授予权限 SQL语言用GRANT语句向用户授予操作的权限。对不同的操作对象可以授予不同的操作权限。 命令格式:GRANT ,ON TO ,WITH GRANT OPTION; 例14:把对学生信息表的查询权限授予所有用户。 GRANT SELECT ON TABLE 学生信息表TO PUBLIC; 2收回权限 命令格式:REVOKE ,ON FROM ,; 例15:收回所有用户对学生信息表的查询权限。 REVOKE SELECT ON
31、 TABLE 学生信息表FROM PUBLIC;,返回,2018/11/20,32,10.6 报表制作,数据环境设计器的作用是为数据报表设计器提供数据。它提供给用户的是一个交互式的工作环境。 完成报表制作的过程: 1打开在10.2节中创建的工程,选择“工程/添加Data Environment”命令,数据环境设计器出现在工程资源管理器窗口中,且有如图所示界面出现。,2018/11/20,33,2建立连接 3启动Command对象 4在VB环境中选择“工程/添加Data Report”命令。 5添加控件、设置报表布局并输出报表:,返回,2018/11/20,34,10.7 应用举例,1、建立数据
32、库 可以采用直接在Access中创建数据库,或者用在VB提供的可视化的数据管理器中建立数据库,或以其它方式建立该数据库,本例中采用10.2节中介绍的方法创建数据库。 该数据库有三张表组成,其名称分别为:stutable、stukecheng、stuchengji,对应存储:学生的学籍信息、课程信息、成绩信息。各表包含字段有: Stutable(学号、姓名、性别、班级、联系方式、家庭所在地),其中“学号”为主键。 Stukecheng(课程编号、课程名称、学分),其中“课程编号”为主键。 Stuchengji(学号、课程编号、高数、英语、大学语文、总成绩),其中“学号、课程编号”为外键。,201
33、8/11/20,35,2创建应用程序 选择“文件/新建工程/VB应用程序向导”,按向导提示选择“下一步”,至图示界面,选择“多文档界面”选项,并为应用程序起名为“学生信息管理系统”,之后继续选择“下一步”。,2018/11/20,36,点击“下一步”按钮至左下图所示界面,可选图示三个选项。然后继续选择“下一步”指令按钮,直至应用程序向导任务完成,共创建如右下图所示5个窗体文件和1个模块文件。,2018/11/20,37,在左下图所示环境中单击鼠标右键,选择“菜单编辑器”并对菜单进行编辑,生成如右下图所示的学生信息管理系统界面。从图中可见该系统具有“学籍管理系统、课程管理系统、成绩管理系统、报表
34、、帮助、退出系统”六项功能。,2018/11/20,38,学籍信息管理界面如图所示。在此界面中,可以完成学生学籍记录的添加、删除、修改等操作。主要使用了Data控件与DataGrid控件的绑定。,课程信息,http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.51xiu.org/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.gz- http:/www.gz- http:/www.gz- http:/ http:/ http:/