数据库应用程序开发.ppt_第1页
数据库应用程序开发.ppt_第2页
数据库应用程序开发.ppt_第3页
数据库应用程序开发.ppt_第4页
数据库应用程序开发.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1,第11章 数据库应用程序开发,11.1 数据库概述 11.2 ADO数据控件 11.3 记录集对象Recordset 11.4 使用SQL查询数据库 11.5 报表制作 11.6 综合应用,2,11.1 数据库概述,数据库 以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器,能为多个用户共享,与应用程序彼此独立的一组数据的集合。 Visual Basic支持多种类型的数据库,如Access数据库、FoxPro数据库、Microsoft Excel、SQL Server和Oracle等。,3,11.1.1关系型数据库模型,关系型数据库模型将数据用表的集合来表示。通过建立简单表之间的关系来定义结构,而不是根据数据的物理存储方式建立数据中的关系。不管表在数据库文件中的物理存储方式如何,都可以把它看作一组行和列。,4,关系型数据库,表是有关信息的逻辑组,行被称为记录,列则被称为字段。,5,11.1.2 使用SQL查询数据库,结构化查询语言(Structure Query Language,SQL)是操作关系数据库的工业标准语言。通过SQL命令,可以从数据库的多个表中获取数据,也可对数据进行更新操作。SQL的主要语句:,6,SELECT语句,1SELECT语句的基本语法形式 SELECT 目标表达式列表 FROM 表名 WHERE 查询条件 GROUP BY 分组字段 HAVING 分组条件 ORDER BY 排序关键字段 ASC|DESC 它包含4部分,其中SELECT和FROM子句是必须的,通过使用SELECT语句返回一个记录集。 例 在学生基本情况表中查询物理系的学生情况: SELECT * FROM 基本情况 WHERE专业= “物理“,7,SELECT语句-输出表达式,目标表达式为查询结果要显示的字段清单(字段间用逗号分开)。数据的显示顺序由字段清单的顺序决定。 可用星号*代表所有字段; 可用AS短语指定字段别名; 可通过构造表达式对原始数据进行复杂的运算处理,产生查询结果。 例如,根据出生年月计算每个学生的年龄 SELECT 姓名, (Year(Date()-Year(出生年月) AS 年龄 FROM 基本情况,8,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 专业 = “数学“,9,SELECT语句-合计函数,合计函数用于对记录集进行统计,例如,统计物理系学生的人数: SELECT COUNT(*) AS 学生人数 FROM 基本情况 WHERE专业= “物理” COUNT(*) 在统计时包含值为空值的记录 COUNT(表达式) 统计时忽略表达式值为空值的记录,10,SELECT语句-分组,GROUP BY子句将指定字段列表中有相同值的记录合并成一条记录。 例如,计算每个学生各门课程平均分: SELECT 学号, AVG(成绩) AS 平均分FROM 成绩表 GROUP BY 学号 要对分组后的数据进行过滤,可在GROUP BY子句后结合HAVING子句在分组中选择。 例如,查询平均分在80分以上的学生: SELECT 学号, AVG(成绩) AS 平均分FROM 成绩表 GROUP BY 学号HAVING AVG(成绩)=80,11,SELECT语句-排序,ORDER BY子句决定了查询结果的排列顺序 在ORDER BY子句中,可以指定一个或多个字段作为排序关键字,ASC选项代表升序,DESC代表降序。,12,SELECT语句-多表连接,若查询的数据分布在多个表中,则必须建立连接查询: SELECT目标表达式列表 FROM 表1, 表2 WHERE 表1.字段 = 表2.字段 例如,学生成绩表中只有学号,如何在查看学生成绩的同时能够直观地看到学生姓名?这就要在两表之间建立连接。SQL语句如下: SELECT基本情况.姓名, 成绩表.* FROM 基本情况, 成绩表 WHERE成绩表.学号=基本情况.学号,13,VB.NET数据库访问,11.2.1 VB.NET数据库访问过程 数据库应用程序引例 例11.1 设计一个窗体,用DataGrid控件显示Student.mdb数据库中“基本情况”表的内容。,14,11.2.1 数据库访问过程,VB.NET采用ADO(ActiveX Data Objects)数据访问技术,编写本程序,需要完成以下工作: 界面设计 在窗体上添加DataGrid控件 创建对象连接 绑定数据到DataGrid控件使其能显示在窗体上。,程序代码,15,VB.NET数据库访问过程,应用程序通过连接对象与服务器上的数据源建立连接(不同类型的数据库使用各自的连接提供程序),16,数据访问过程,命令对象发出SQL命令从数据源中获取数据 数据集对象用来保存所查询到的数据记录 数据适配器用于在数据源和数据集之间交换数据。 当数据传输到客户端后,ADO.NET断开与数据源的连接,应用程序离线工作 如果应用程序改变了数据集的内容,通过重新连接来提交变化。,17,数据集,数据集是一个容器,一个数据集可以包含多张数据表及数据表之间的关系,这些表可以来自多个数据库或电子表格之类的非数据库源。一旦数据在数据集内,则不管它的原始源是什么,都可以使用一致的对象模型对它进行操作。 在 ADO.NET 中,数据传输的格式是 XML,是基于文本的标准格式,不使用二进制信息,它可以通过任何协议发送。ADO.NET 自动根据需要将数据转换为 XML 或从 XML 转换出数据,而用户不必知道 XML 。,18,11.2.2 使用数据控件访问数据库,ADO.NET数据控件对象有4套: 用于 SQL Server 7.0(以Sql为前导名) 用于Oracle数据库(以Orc为前导名) 用于ODBC 数据源(以Odbc为前导名) 用于OLE DB 接口的数据库(以OleDb为前导名),19,使用OleDb数据控件,OleDb数据控件对象是一个通用对象,可访问目前流行的数据库系统,20,使用OleDb访问数据库,1启动数据适配器配置向导 将数据适配器对象OledbDataAdapter从工具箱拖放到窗体或组件上。 2创建连接,21,选择提供程序,选择提供程序,22,指定访问的数据库,指定要访问的数据库文件,23,配置命令对象,选择使用SQL 语句建立查询,24,命令对象重要属性,命令对象最重要的属性 Connection 指定连接对象 CommandType 使用命令的类型 CommandText 操作命令的内容,25,连接对象重要属性,连接对象最重要的属性是ConnectionString,它是一个字符串,包含了用于与数据源建立连接的相关信息。典型的 ConnectionString 属性值如下: Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Student.mdb Provide,指定连接提供程序的名称; Data Source,用于指定要连接的数据源文件。,26,生成数据集,选择“数据|生成数据集”命令,打开“生成数据集”对话框。,1,2. 命名数据集,3,4,27,生成数据集,选择“数据|生成数据集”命令,打开“生成数据集”对话框。,1,2. 命名数据集,3,4,注意:这里的DataSet1是指一个数据集的定义,它是一个用xml格式表示的,文件名为Dataset1.xsd的数据集定义文件,并不包含任何的数据库中的数据。而按此文件架构产生的DataSet11才是一个包含实际数据的数据集对象实例。,28,11.2.3 数据绑定,什么是数据绑定? 数据绑定是一个过程,即在运行时自动为与数据集中的元素关联的控件设置属性。以便通过控件显示数据集中的数据。,29,数据绑定,Windows 窗体有简单数据绑定和复杂数据绑定 简单数据绑定 简单数据绑定就是将控件绑定到单个数据字段。每个控件仅显示数据集中的一个字段值。最常用的简单数据绑定是将数据绑定到文本框和标签。要建立数据绑定,需要在设计或运行时对控件的DataBinding属性进行设置。,30,简单数据绑定,例11.2 数据绑定的操作过程 界面设计,创建和配置数据集,设置绑定属性,程序代码,Private Sub Form1_Load() Handles MyBase.Load DataSet11.Clear() OleDbDataAdapter1.Fill(DataSet11, “基本情况“) End Sub,31,简单数据绑定,使用BindingContext 对象浏览数据记录 Position 属性 数据集当前记录的位置序号 Count 属性 数据表中的记录条数 转跳到第一条记录 Me.BindingContext(DataSet11, “基本情况“).Position = 0 转跳到上一条记录 Me.BindingContext(DataSet11, “基本情况“).Position -= 1 转跳到下一条记录 Me.BindingContext(DataSet11, “基本情况“).Position += 1 最后一条记录的Position 属性值等于Count 属性值-1,32,复杂数据绑定,复杂数据绑定允许将多个数据元素绑定到一个控件,同时显示记录源中的多行或多列。支持复杂数据绑定的控件:数据网格DataGrid、组合框ComboBox和列表框ListBox等,33,复杂数据绑定,复杂数据绑定属 性设置,34,复杂数据绑定,例11.3复杂数据绑定的操作过程 界面设计,创建和配置数据集,数据绑定 本例DataGrid控件要绑定不同的表,故需要通过代码设置控件的DataSource 属性。,程序代码,Private Sub Button1_Click() Handles Button1.Click DataGrid1.DataSource = DataSet11.Tables(“基本情况“) End Sub Private Sub Button2_Click() Handles Button2.Click DataGrid1.DataSource = DataSet11.Tables(“成绩表“) End Sub,35,11.2.3 使用代码访问数据库,创建数据对象的代码: Dim 数据对象 As New 对象类(参数) 例11.4 用代码实现例11.2的功能 界面设计,导入ADO.NET名称空间 Imports System.Data Imports System.Data.OleDb,36,创建对象,创建OleDbConnection连接对象 创建连接Student.mdb的对象objConn,代码: Dim strConn As String = “Provider = Microsoft. Jet.OLEDB.4.0; Data Source = Student.mdb“ Dim objConn As New OleDbConnection(strConn) objConn.Open() 创建创建OleDbDataAdapter对象 Dim strSql = “Select * From 基本情况“ Dim objAdap As New OleDbDataAdapter(strSql, objConn),37,创建对象,创建数据集对象 Dim objDSet As New DataSet 用数据集的“基本情况”表填充objDSet对象 objAdap.Fill(objDSet, “基本情况“),38,使用代码绑定数据,实现数据绑定 使用控件的DataBindings属性的Add方法建立绑定: 控件对象.DataBindings.Add(New Binding(“控件属性“, 数据集, “字段名“) 例 将字段姓名绑定到控件TextBox1的Text 属性: TextBox1.DataBindings.Add(New Binding(“Text“, objDSet, “基本情况.姓名“),39,记录的浏览,浏览记录,各命令按钮的Click 事件代码为: 首记录: Me.BindingContext(objDSet, “基本情况“).Position = 0 上一条: Me.BindingContext(objDSet, “基本情况“).Position -= 1 下一条: Me.BindingContext(objDSet, “基本情况“).Position += 1 尾记录: Me.BindingContext(objDSet, “基本情况“).Position = Me.BindingContext (objDSet, “基本情况“).Count-1,40,11.3.1 数据库编辑操作 常见的编辑操作就是对数据的增、删、改。使用命令对象直接对数据源进行操作,方法如下: CommandText属性 设置SQL语句 调用Execute方法 执行SQL语句 ExecuteReader 返回DataReader结果集 ExecuteNonQuery 不返回数据的SQL命令(增、删、改) ExecuteScalar 返回单个数据的SQL命令(例对数据的统计、求和),41,增加数据记录,使用Insert语句插入一条记录到数据源。例如: Insert into 基本情况(姓名, 学号) Values (李力, 50101) 实际参数可通过文本框输入,可在Values短语中使用标记传递实参值: Insert into 基本情况(姓名, 学号) Values (name, num) 而参数定义的语法为: Dim 参数名 As new OleDBparameter(sql查询或更新字符串中的映射名,数据类型,长度),42,增加数据记录例,例11.5 在例11.4的基础上添加增加记录、删除记录、修改记录按钮,当单击“增加”按钮时,先清空文本框,并将按钮提示改变成“确认”;当在文本框输入数据后,再单击“确认”,将文本框内输入的数据构成一条记录插入到数据源、重新填充数据集并恢复按钮提示。,代码说明,43,删除数据源内的记录,删除数据源内的记录使用Delect语句 Delect 基本情况 Where 学号 = 50102 实参50102通过文本框输入。要用输入值构成删除条件,除了采用参数传递方法外,也可用字符连接运算符拼接变量形成条件,例如: “Delect 基本情况 Where 学号 = “ & TextBox2.Text 注意:如果字段的类型为字符型,则输入值的两侧加上单引号: “Delect 基本情况 Where 学号 = “ & TextBox2.Text & “ “ 字段的类型为日期型,将单引号改为#,44,删除数据记录,删除数据集内的行使用Rows对象的Delete方法 例:删除Tables(“基本情况”)中的第三条记录: objDSet.Tables (“基本情况“ ).Rows (2).Delete Delete方法并不真正实现删除,而只是在Rows集合中对指定的行作删除标记,直到数据集对象调用AcceptChanges方法的时候,才真正被删除;如果是RejectChanges方法被调用,那么Delete方法删除的数据行对象将被恢复。 例11.6 为例11.5中删除按钮添加代码。,代码说明,45,修改数据记录,修改数据源中的记录使用Update语句 Update 基本情况 Set 专业= 计算机 Where 学号 = 50102 修改程序编写与增加记录类似,其关键是: 使用参数传递或字符动态拼接的方法将新的数据传递到Update 语句 能在数据源中定位要更新的记录(通常可使用关键字段作为定位条件) 对于数据集,数据绑定结构通常是双向的,能自动将更改从数据绑定控件发送到数据集。 例11.7 为修改按钮添加代码,代码说明,46,11.3.2 数据库查询操作,方法一 通过命令对象执行SQL语句,从数据源中获取信息,查询条件由Select语句的Where短语构成,使用And与Or逻辑运算符组合出复杂的查询条件 方法二 使用数据集的数据视图(DataView)的筛选功能,47,数据库查询操作,数据视图(DataView)的主要方法与属性,48,模糊查询,模糊查询使用运算符Like,用百分号%来代替任意个不确定的内容,用下划线_代替一个不确定的内容。 例如,“姓名 Like 张%”将查询所有张姓的人员,而“姓名 Like 张_” 查询以“张”开头,只有两个字的记录。 例11.8 设计一个应用程序,演示不同的查询功能,代码说明,49,11.3.3 BLOB数据处理,1预备知识 二进制大型对象(Binary Large Object,BLOB)是指任何需要存入数据库的随机大块字节流数据,例如图形或声音文件。数据库中存放BLO

温馨提示

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

最新文档

评论

0/150

提交评论