数据库应用技术.ppt_第1页
数据库应用技术.ppt_第2页
数据库应用技术.ppt_第3页
数据库应用技术.ppt_第4页
数据库应用技术.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第10章数据库应用基础,10.1 数据库概述 10.2 VB 数据库访问 10.3 记录集对象 10.4 综合应用,10.1 数据库概述,1. 数据库:是指一组排列成易于处理或读取的相关信息,它是由一个或多个表对象组成的集合。这有些类似于Excel的工作簿和工作表。 根据数据模型,即实现数据结构化所采用的联系方式,数据库可以分为层次数据库、网状数据库和关系数据库。,10.1.1关系型数据库模型,关系型数据库模型将数据用表的集合来表示。 通过建立简单表之间的关系来定义结构, 1. 记录(行):每张二维表均由若干行和列构成,其中每一行称为一条记录 2.字段(列):二维表中的每一列称为一个字段,每一列均有一个名字,称为字段名,各字段名互不相同 3主键:关系数据库中的某个字段或某些字段的组合定义为主键,每条记录的主键值都是唯一的,这就保证了可以通过主键唯一标识一条记录。,10.1.2 使用SQL查询数据库,结构化查询语言(Structure Query Language,SQL)是操作关系数据库的标准语言 通过SQL命令,可以从数据库的多个表中获取数据,也可对数据进行更新操作 用户提出一个查询,数据库返回所有与该查询匹配的记录。SQL的主要语句:,SELECT语句,SELECT语句的基本语法形式 SELECT 字段表 FROM 表名 WHERE 查询条件 GROUP BY 分组 字段 HAVING 分组条件 ORDER BY 字段ASC|DESC 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 专业 = “数学“ 复合条件:如查询数学和英语成绩均不及格的学生信息 SELECT * FROM score WHERE 数学60 AND 英语60,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,ORDER BY子句决定了查询结果的排列顺序 在ORDER BY子句中,可以指定一个或多个字段作为排序关键字,ASC选项代表升序,DESC代表降序。 例如查询学生成绩表中的所有数学成绩及格的学生信息,并将查询结果按数学成绩降序排列 SELECT * FROM score WHERE 数学=60 ORDER BY 数学 DESC,SELECT语句图解,SELECT语句-多表连接,若查询的数据分布在多个表中,则必须建立连接查询: SELECT目标表达式列表 FROM 表1, 表2 WHERE 表1.字段 = 表2.字段 例如,学生成绩表中只有学号,如何在查看学生成绩的同时能够直观地看到学生姓名?这就要在两表之间建立连接。SQL语句如下: SELECT基本情况.姓名, 成绩表.* FROM 基本情况, 成绩表 WHERE成绩表.学号=基本情况.学号,10.2 VB数据库访问,10.2.1 ADO数据控件使用基础 ADO(ActiveX Data Object)数据访问接口 数据库应用程序引例 例10.1 设计一个窗体,用DataGrid控件显 Student.mdb数据库中“基本情况”表的内容。,ADO数据控件使用,VB采用ADO(ActiveX Data Objects)数据访问技术,编写本程序,需要完成以下工作: 在窗体上添加ADO数据控件 使用ADO连接对象建立与数据提供者之间的连接 使用ADO命令对象操作数据源,从数据源中产生记录集并存放在内存中 建立记录集与数据绑定控件的关联,在窗体上显示数据 DataGrid控件是一种类似于电子表格的数据绑定ActiveX控件(Microsoft DataGrid Control 6.0),需要配合ADO控件一起使用。它用若干行、列来表示Recordset对象的记录和字段。,数据源连接设置操作,右单击ADO控件,选择快捷菜单ADODC属性命令,打开ADO控件属性页窗,选择提供程序,选择提供程序,指定访问的数据库,指定要访问的数据库文件,连接对象重要属性,1.连接对象最重要的属性是ConnectionString:它是一个字符串,包含了用于与数据源建立连接的相关信息 典型的 ConnectionString 属性值如下: Provider = Microsoft.Jet. 4.0 OLE DB Provider; Data Source = Student.mdb Provide:指定连接提供程序的名称; Data Source:用于指定要连接的数据源文件。,VB数据库访问过程,2. CommandType:指定获取记录源的命令类型,3.RecordSource属性 RecordSource确定具体可访问的数据来源, 这些数据构成记录集对象Recordset。 该属性值可以是数据库中的单个表名,也可以是使用SQL查询语言的一个查询字符串。 例:要指定记录集对象为Student.mdb数据库中的“基本情况”表,则设置RecordSource=“基本情况” 若要用所有物理专业的学生数据构成记录集对象,则设置 RecordSource=“Select*From 基本情况 Where 专业=物理”,3. ADO数据控件的其他属性、事件和方法 (1) Recordset(记录集)对象: 记录集”对象描述来自数据表或命令执行结果的记录 集合.记录集对象中的每个字段值用 Recordset.Fields(“字段名”)获得 (2)BOFAction和EOFAction属性 BOF :当前记录位置位于 Recordset 对象的第一个记录之前 EOF :当前记录位置位于 Recordset 对象的最后一个记录之后 (3). Refresh方法: 建立或重新显示与Data控件相连接的数据库记录集。 当在运行状态改变ADO数据控件的数据源连接属性后 必须使用Refresh方法激活这些变化 例:记录集由“基本情况”改为“成绩表” Adodc1.RecordSource=“成绩表” Adodc1. Refresh,(4) WillMove和MoveComplete事件。 当用某种方法改变记录集的指针使其从一条记录移到另一条记录,产生WillMove事件 MoveComplete事件发生在一条记录成为当前记录后,它出现在WillMove事件后,数据访问过程,应用程序通过连接对象与数据源建立连接(不同类型的数据库使用各自的连接提供程序) 命令对象发出SQL命令从数据源中获取数据 数据集对象用来保存所查询到的数据记录 应用程序对记录集进行操作 记录集表示内存中来自基本表或命令执行结果的集合,也由记录(行)和字段(列)构成,可以把它当作一个数据表来进行操作,10.2.2 数据绑定,数据绑定是一个过程,即在运行时自动为与记录集中的元素关联的控件设置属性。以便通过控件显示数据集中的数据。,数据绑定,Windows 窗体有简单数据绑定和复杂数据绑定 简单数据绑定 简单数据绑定:将控件绑定到单个数据字段。每个控件仅显示数据集中的一个字段值。 最常用的简单数据绑定是将数据绑定到文本框和标签 在设计或运行时设置控件属性建立绑定: DataSource:指定ADO数据控件 DataField:设置记录集中有效的字段,简单数据绑定,例10.2 设计一个窗体,用以浏览Student.mdb数据库中基本情况表的内容 界面设计 ADO数据控件 3个文本框 2个组合框 5个标签控件,建立连接和产生记录集 1.选中ADO数据控件-单击右键-ADODC属性-打开属性页-使用连接字符串-选Microsoft.Jet. 4.0 OLE DB Provider 2.单击下一步-选择数据库文件-测试连接 3.在属性页中单击“记录源”-命令类型选2- 表名称选择,设置绑定属性 1.将文本框、组合框的DataSource属性设置为Adodc1 2.数据显示格式通过DataFormat属性改变 3.将文本框、组合框的DataField选择 4.若将ADO控件的EofAction属性设置为2,则应用程序具有添加新记录的功能,复杂数据绑定,复杂数据绑定允许将多个数据字段绑定到一个控件,同时显示记录源中的多行或多列。 支持复杂数据绑定的常用控件: DataGrid 数据网格 MSHFlexGrid 数据网格 DataList 数据列表框 DataCombo 数据组合框,复杂数据绑定,例10.3复杂数据绑定的操作过程 界面设计:ADO数据控件、 DataGrid、2个命令按钮 建立连接和产生记录集: Adodc1控件记录源选“基本情况”或“成绩表”为默认值 DataGrid DataSource属性设置为Adodc1 数据绑定 本例DataGrid控件要绑定不同的表,故需要通过代码设置控件的DataSource 属性。,程序代码 Private Sub Command1_Click() Adodc1.RecordSource = “基本情况“ Adodc1.Refresh End Sub Private Sub Command2_Click() Adodc1.RecordSource = “成绩表“ Adodc1.Refresh End Sub,例10.4使用SQL语句选择数据表部分数据构成记录集。在网格上绑定部分字段,需要对数据网格布局进行编辑 Adodc1控件记录源-命令类型选8-adCmdUnknown-在命令文本框内输入“Select * from 基本情况 Where 性别=“男”,鼠标右击DataGrid-选检索字段-点击是将表中字段装载到DataGrid控件中,10.3 记录集对象,10.3.1 浏览记录集,1. AbsoloutPostion属性 返回当前记录指针值,从1到Recordset对象所含记录数,第n条记录的AbsoloutPostion属性值为n 2. BOF和EOF的属性 BOF判定记录指针是否在首记录之前 EOF判定记录指针是否在末记录之后 如果BOF和EOF的属性值都为True,则记录集为空 若当前记录指针值位于BOF, AbsoloutPostion属性返回AdPosBOF(-2) 若当前记录指针值位于EOF, AbsoloutPostion属性返回AdPosEOF(-3) 记录集为空,AbsoloutPostion属性返回AdPosUnknown(-1),3. RecordCount属性 对Recordset对象中的记录计数,该属性为只读属性 Private Sub Adodc1_MoveComplete() Adodc1.Caption = Adodc1.Recordset.AbsolutePosition & “/“ & Adodc1.Recordset.RecordCount End Sub 可以在数据控件的标题区显示当前记录的序号和记录总数,4. Find方法 在Recordset对象中查找与指定条件相符的第一条记录,并使之成为当前记录。如果找不到,则记录指针指在记录集末尾。 Recordset.Find 搜索条件 ,位移 , 搜索方向, 开始位置 例:搜索条件是一个字符串 Adodc1.Recordset.Find“学号=50102” 或者 mt=“50102” Adodc1.Recordset.Find“学号=“&”&mt&” 若为数值类型则不加单引号 使用Like运算符 Adodc1.Recordset.Find“学号Like 50*”,5. Move方法组 Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。 (1) MoveFirst方法移至第1条记录。 (2) MoveLast方法移至最后一条记录。 (3) MoveNext方法移至下一条记录。 (4) MovePrevious方法移至上一条记录。 (5) Move n 方法向前或向后移n条记录。,记录集属性方法小结,例10.5用命令按钮代替数据控件对象的4个箭头按钮的 功能,使用Find方法查找记录(例10.2的基础上),Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 Adodc1.Recordset.MoveFirst Case 1 Adodc1.Recordset.MovePrevious If Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst Case 2 Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast Case 3 Adodc1.Recordset.MoveLast Case 4 Dim mno As String mno = InputBox(“请输入学号“, “查找窗“) Adodc1.Recordset.Find “学号 like “ & mno & “, , , 1 If Adodc1.Recordset.EOF Then MsgBox “无此学号!“ & Adodc1.Recordset.AbsolutePosition, , “提示“ End Select,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方法,即可确定所做的修改。,Adodc1.Recordset. AddNew 增加记录,数据库,UpData,填入新数据,编辑记录 删除记录 给各字段赋值 调用Delete方法 调用Update方法 移动记录指针,数据修改小结,例11.6在例10.5的基础上加入“新增”、“删除”、“更新”、 “放弃”和“结束”5个按钮,通过对按钮的编程建立增、 删、改功能,Private Sub Command2_Click(Index As Integer) Dim ask As Integer Select Case Index Case 0 Adodc1.Recordset.AddNew Case 1 ask = MsgBox(“删除否?“, vbYesNo) If ask = 6 Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If Case 2 Adodc1.Recordset.Update Case 3 Adodc1.Recordset.CancelUpdate Case 4 End End Select End Sub,10.3.3 查询与统计,通过SQL语句从数据源中获取信息,查询条件由Select语句的Where短语构成,使用And与Or运算符组合出复杂的查询条件。模糊查询使用运算符Like,百分号%代替任意不确定的内容,用下划线_代替一个不确定的内容。 例如:姓名 Like 张% 将查询所有张姓的人员 姓名 Like 张_ 将查询张姓两个字的人员,例10.7 根据输入的专业名称,在网格内显示Student.mdb 数据库中该专业所有学生信息 设置ADO数据控件、 DataGrid、1个命令按钮、 标签、文本框,Private Sub Command1_Click() If Text1 “ “ Then Adodc1.RecordSource = “select * from 基本情况 where 专业=“ “ mlink = mlink + “Data Source=“ + mpath + “Student.mdb“ Adodc1.ConnectionString = mlink Adodc1.CommandType = adCmdUnknown End Sub,例10.8使用数据列表框或数据组合框提供专业名称,实现查询 设置2个ADO数据控件、 DataGrid控件、 DataList控件,Private Sub DataList1_Click() Adodc1.RecordSource = “select * from 基本情况 where 专业=“ “ mlink = mlink + “Data Source=“ + mpath + “Student.mdb“ Adodc1.ConnectionString = mlink Adodc1.CommandType = adCmdUnknown End Sub,例10.9使用SQL的函数和分组功能,统计各专业的人数、年龄分布。,Private Sub Command1_Click() Adodc1.RecordSource = “Select 专业,count(*) as 人数 from 基本情况 group by 专业“ Adodc1.Refresh End Sub Private Sub Command2_Click() Adodc1.RecordSource = “Select year(出生年月) as 出生年月,count(*) as 人数 from 基本情况 group by year(出生年月)“ Adodc1.Refresh End Sub Private Sub Form_Load() Dim mpath$, mlink$ mpath = App.Path If Right(mpath, 1) “ Then mpath = mpath + “ mlink = “Provider=Microsoft.Jet.OLEDB.4.0;“ mlink = mlink + “Data Source=“ +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论