450 likes | 674 Views
Visual Basic 程序设计简明教程 第三版 张学典 上海理工大学光电学院 MSN: zhangxuedian@hotmail.com 021-55271048. 目 录. 第 1 章 Visual Basic 程序设计概述 第 2 章 VB 可视化编程基础 第 3 章 VB 语言基础 第 4 章 VB 控制结构 第 5 章 数组和自定义类型 第 6 章 过 程 第 7 章 用户界面设计 第 8 章 数据文件 第 9 章 图形操作 第 10 章 数据库应用基础. 10.1 数据库概述 10.2 VB 数据库访问
E N D
Visual Basic 程序设计简明教程 第三版 张学典 上海理工大学光电学院 MSN:zhangxuedian@hotmail.com 021-55271048
目 录 第1章 Visual Basic程序设计概述 第2章 VB可视化编程基础 第3章 VB语言基础 第4章 VB控制结构 第5章 数组和自定义类型 第6章 过 程 第7章 用户界面设计 第8章 数据文件 第9章 图形操作 第10章 数据库应用基础
10.1 数据库概述 10.2 VB数据库访问 10.3 记录集对象 10.4 综合应用 第10章数据库应用基础
10.1 数据库概述 数据库 以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器,能为多个用户共享,与应用程序彼此独立的一组数据的集合。 Visual Basic支持多种类型的数据库,如Access数据库、FoxPro数据库、Microsoft Excel、SQL Server和Oracle等。 本章目录
表 数据库 10.1.1关系型数据库模型 关系型数据库模型将数据用表的集合来表示。通过建立简单表之间的关系来定义结构,而不是根据数据的物理存储方式建立数据中的关系。不管表在数据库文件中的物理存储方式如何,都可以把它看作一组行和列。 本章目录
主键 字段 记录 关系型数据库 表是有关信息的逻辑组,行被称为记录,列则被称为字段。 本章目录
10.1.2 使用SQL查询数据库 结构化查询语言(Structure Query Language,SQL)是操作关系数据库的标准语言。通过SQL命令,可以从数据库的多个表中获取数据,也可对数据进行更新操作。SQL的主要语句: 本章目录
SELECT语句 SELECT语句的基本语法形式 SELECT 目标表达式列表FROM 表名 [ WHERE 查询条件] [ GROUP BY 分组字段HAVING 分组条件] [ ORDER BY 排序关键字段[ASC|DESC] ] 它包含4部分,其中SELECT和FROM子句是必须的,通过使用SELECT语句返回一个记录集。 例 在学生基本情况表中查询物理系的学生情况: SELECT * FROM 基本情况 WHERE专业= "物理" 本章目录
SELECT语句-输出表达式 • 目标表达式为查询结果要显示的字段清单(字段间用逗号分开)。数据的显示顺序由字段清单的顺序决定。 • 可用星号*代表所有字段; • 可用AS短语指定字段别名; • 可通过构造表达式对原始数据进行复杂的运算处理,产生查询结果。 • 例如,根据出生年月计算每个学生的年龄 • SELECT 姓名, (Year(Date())-Year(出生年月)) AS 年龄 FROM 基本情况 本章目录
SELECT语句-查询条件 WHERE子句用于限制记录的选择 例如,查询1985-01-01到1986-12-31之间出生的学生: SELECT * FROM 基本情况 WHERE 出生年月 BETWEEN #1985-01-01# AND #1986-12-31# 要枚举出若干项进行查询,使用运算符IN 例如,查询物理系和数学系的学生数据: SELECT * FROM 基本情况 WHERE 专业 IN ("物理", "数学") 等价于: SELECT * FROM 基本情况 WHERE专业= "物理" OR 专业 = "数学" 本章目录
合计函数 描 述 AVG 获得特定字段中的值的平均数 COUNT 返回选定记录的个数 SUM 返回特定字段中所有值的总和 MAX 返回指定字段中的最大值 MIN 返回指定字段中的最小值 SELECT语句-合计函数 合计函数用于对记录集进行统计 例如,统计物理系学生的人数: SELECT COUNT(*) AS 学生人数 FROM 基本情况 WHERE专业= “物理” COUNT(*) 在统计时包含值为空值的记录 COUNT(表达式) 统计时忽略表达式值为空值的记录 本章目录
SELECT语句-分组 GROUP BY子句将指定字段列表中有相同值的记录合并成一条记录。 例如,计算每个学生各门课程平均分: SELECT 学号, AVG(成绩) AS 平均分FROM 成绩表 GROUP BY 学号 要对分组后的数据进行过滤,可在GROUP BY子句后结合HAVING子句在分组中选择。 例如,查询平均分在80分以上的学生: SELECT 学号, AVG(成绩) AS 平均分FROM 成绩表 GROUP BY 学号HAVING AVG(成绩)>=80 本章目录
SELECT语句-排序 ORDER BY子句决定了查询结果的排列顺序 在ORDER BY子句中,可以指定一个或多个字段作为排序关键字,ASC选项代表升序,DESC代表降序。 本章目录
SELECT语句图解 本章目录
SELECT语句-多表连接 若查询的数据分布在多个表中,则必须建立连接查询: SELECT目标表达式列表 FROM 表1, 表2 WHERE 表1.字段 = 表2.字段 例如,学生成绩表中只有学号,如何在查看学生成绩的同时能够直观地看到学生姓名?这就要在两表之间建立连接。SQL语句如下: SELECT基本情况.姓名, 成绩表.* FROM 基本情况, 成绩表 WHERE成绩表.学号=基本情况.学号 本章目录
10.2 VB数据库访问 10.2.1 ADO数据控件使用基础 数据库应用程序引例 例10.1设计一个窗体,用DataGrid控件显示Student.mdb数据库中“基本情况”表的内容。 本章目录
ADO数据控件使用 VB采用ADO(ActiveX Data Objects)数据访问技术,编写本程序,需要完成以下工作: 在窗体上添加ADO数据控件 使用ADO连接对象建立与数据提供者之间的连接 使用ADO命令对象操作数据源,从数据源中产生记录集并存放在内存中 建立记录集与数据绑定控件的关联,在窗体上显示数据。 本章目录
连接数据源的方式 单击 数据源连接设置操作 右单击ADO控件,选择快捷菜单ADODC属性命令,打开ADO控件属性页窗 本章目录
选择提供程序 选择提供程序 本章目录
指定访问的数据库 指定要访问的数据库文件 本章目录
连接对象重要属性 连接对象最重要的属性是ConnectionString,它是一个字符串,包含了用于与数据源建立连接的相关信息。典型的ConnectionString 属性值如下: Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Student.mdb Provide,指定连接提供程序的名称; Data Source,用于指定要连接的数据源文件。 本章目录
VB数据库访问过程 本章目录
数据访问过程 应用程序通过连接对象与数据源建立连接(不同类型的数据库使用各自的连接提供程序) 命令对象发出SQL命令从数据源中获取数据 数据集对象用来保存所查询到的数据记录 应用程序对记录集进行操作 记录集表示内存中来自基本表或命令执行结果的集合,也由记录(行)和字段(列)构成,可以把它当作一个数据表来进行操作 本章目录
10.2.2数据绑定 什么是数据绑定? 数据绑定是一个过程,即在运行时自动为与记录集中的元素关联的控件设置属性。以便通过控件显示数据集中的数据。 本章目录
数据绑定 Windows 窗体有简单数据绑定和复杂数据绑定 简单数据绑定 简单数据绑定就是将控件绑定到单个数据字段。每个控件仅显示数据集中的一个字段值。最常用的简单数据绑定是将数据绑定到文本框和标签。 在设计或运行时设置控件属性建立绑定: DataSource:指定ADO数据控件 DataField:设置记录集中有效的字段 本章目录
简单数据绑定 • 例10.2 数据绑定的操作过程 • 界面设计 • 建立连接和产生记录集 • 设置绑定属性 本章目录
复杂数据绑定 • 复杂数据绑定允许将多个数据字段绑定到一个控件,同时显示记录源中的多行或多列。 • 支持复杂数据绑定的常用控件: • DataGrid 数据网格 • MSHFlexGrid 数据网格 • DataList 数据列表框 • DataCombo 数据组合框 本章目录
复杂数据绑定 • 例10.3复杂数据绑定的操作过程 • 界面设计 • 建立连接和产生记录集 Private Sub Command1_Click() Adodc1.RecordSource = "基本情况" Adodc1.Refresh End Sub Private Sub Command2_Click() Adodc1.RecordSource = "成绩表" Adodc1.Refresh End Sub • 数据绑定 • 本例DataGrid控件要绑定不同的表,故需要通过代码设置控件的DataSource 属性。 • 程序代码 本章目录
复杂数据绑定 例10.4使用SQL语句选择数据表部分数据构成记录集。在网格上绑定部分字段,需要对数据网格布局进行编辑。 本章目录
10.3.1 浏览记录集 10.3 记录集对象 1. AbsoloutPostion属性 返回当前记录指针值,从1到Recordset对象所含记录数。 2. BOF和EOF的属性 BOF判定记录指针是否在首记录之前,EOF判定记录指针是否在末记录之后。 如果BOF和EOF的属性值都为True,则记录集为空。 本章目录
3. RecordCount属性 对Recordset对象中的记录计数,该属性为只读属性。 4. Find方法 在Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录。如果找不到,则记录指针指在记录集末尾。 Recordset.Find 搜索条件[,[位移] , [搜索方向], [开始位置]] 本章目录
5. Move方法组 Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。 (1) MoveFirst方法移至第1条记录。 (2) MoveLast方法移至最后一条记录。 (3) MoveNext方法移至下一条记录。 (4) MovePrevious方法移至上一条记录。 (5) Move [n] 方法向前或向后移n条记录。 例10.5用命令按钮代替数据控件对象的4个箭头按钮的功能,使用Find方法查找记录 本章目录
记录集属性方法小结 BOF 学号 姓名 专业 MoveFirst 500102 庄前 数学 MoveNext 500201 李明 物理 MovePrevious … … … MoveLast 500011 丁保华 计算机 EOF Adodc1.Recordset. Find "学号= '500011' " 本章目录
10.3.2 记录集的编辑 • 1.数据编辑方法 • 记录集中数据的增、删、改涉及到4个方法: • AddNew方法 在记录集中增加入一个新行 • Delete方法 删除记录集中的当前记录 • Update方法 确定修改并保存到数据源中 • CancelUpdate方法 取消未调用Update方法前对记录所做的所有修改 本章目录
增加新记录 2.增加新记录 (1) 调用AddNew方法增加一条空记录 (2) 给新记录各字段赋值(可以通过绑定控件直接输入,或使用程序代码给字段赋值,格式为:Recordset.Fields("字段名") = 值 (3) 调用Update方法,确定所做的添加,将缓冲区内的数据写入数据库 本章目录
删除记录 3.删除记录 (1)定位被删除的记录使之成为当前记录 (2)调用Delete方法 (3)移动记录指针 注意:使用Delete方法当前记录立即删除,不加任何的警告或者提示。删除一条记录后,绑定控件仍旧显示该记录的内容。因此,必须移动记录指针刷新绑定控件。 本章目录
修改记录 4.修改记录 当改变数据项的的内容时,ADO自动进入编辑状态,在对数据编辑后,只要改变记录集的指针或调用Update方法,即可确定所做的修改。 例11.6在例10.5的基础上加入“新增”、“删除”、“更新”、“放弃”和“结束”5个按钮,通过对按钮的编程建立增、删、改功能 本章目录
数据修改小结 学号 姓名 专业 500102 庄前 数学 数据库 500201 李明 物理 学号 姓名 专业 … … … 500102 庄前 数学 500011 丁保华 计算机 500201 李明 物理 … … … 500011 丁保华 计算机 UpData 填入新数据 Adodc1.Recordset. AddNew 增加记录 • 编辑记录 删除记录 • 给各字段赋值 调用Delete方法 • 调用Update方法 移动记录指针 本章目录
10.3.3 查询与统计 通过SQL语句从数据源中获取信息,查询条件由Select语句的Where短语构成,使用And与Or运算符组合出复杂的查询条件。模糊查询使用运算符Like,百分号%代替任意个不确定的内容,用下划线_代替一个不确定的内容。 例如,姓名 Like '张%'将查询所有张姓的人员 例10.7 根据输入的专业名称,在网格内显示Student.mdb数据库中该专业所有学生信息 本章目录
10.3.3 查询与统计 例10.8使用数据列表框或数据组合框提供专业名称,实现查询 例10.9使用SQL的函数和分组功能,统计各专业的人数、年龄分布。 本章目录
10.3.4 BLOB数据处理 二进制大型对象(Binary Large Object,BLOB)是指任何需要存入数据库的随机大块字节流数据,例如图形或声音文件。数据库中存放BLOB的字段必须是二进制类型(在Access中为OLE对象),在ADO中如何处理BLOB类型的数据,把图形作为数据库的一个字段值存放在数据库,并能显示图形数据? 本章目录
BLOB数据处理 • AppendChunk方法将BLOB数据写入数据库,语法格式: • ADO对象.Recordset.Fields(字段).AppendChunk Data • 用二进制访问方式打开BLOB数据文件 • 定义一个与文件长度相同大小的字节型数组 • 将文件保存到数组 • 使用ADO对象的AppendChunk方法写入数据库 • 例10.10选择指定图形文件将数据写入到数据库,在浏览记录时显示照片。 本章目录
10.4 综 合 应 用 例10.11 设计一个多媒体信息管理系统,要求能将多媒体数据保存在数据库,具有记录的增加、删除、统计和多媒体信息重现等功能。 例10.12 设计一个飞行航班信息查询系统,要求具有记录的增加、编辑、删除、查询等功能 本章目录
思考题 1.什么是关系型数据库? 2. 简述SQL中常用的Select 语句的基本格式和用法。 3. 简述使用ADO数据控件访问数据库的步骤。 4. 什么是数据绑定?怎样实现数据绑定? 5. 在ADO中如何用代码实现数据连接,创建一个记录集对象? 6.在ADO中如何用代码实现记录指针的移动? 7. 如何实现对记录集的增、删、改功能? 8. 如果要显示数据表内的照片,可使用哪些控件? 本章目录