收藏 分享(赏)

VisualC#2008大学教程第二十一章.ppt

上传人:dzzj200808 文档编号:3362321 上传时间:2018-10-18 格式:PPT 页数:201 大小:4.50MB
下载 相关 举报
VisualC#2008大学教程第二十一章.ppt_第1页
第1页 / 共201页
VisualC#2008大学教程第二十一章.ppt_第2页
第2页 / 共201页
VisualC#2008大学教程第二十一章.ppt_第3页
第3页 / 共201页
VisualC#2008大学教程第二十一章.ppt_第4页
第4页 / 共201页
VisualC#2008大学教程第二十一章.ppt_第5页
第5页 / 共201页
点击查看更多>>
资源描述

1、1,第21章 数据库访问技术,理工大学华信软件学院 张一鸣 2010年8月25日,C#语言程序设计,2,第21章数据库访问技术,数据库与关系数据库 SQL语言简介 ADO.NET简介 连接数据库 执行SQL语句 读取数据、数据适配器与数据集 用LINQtoSQL读取和操纵数据库数据 用对象关系设计器创建LINQtoSQL类 用数据绑定在GUI控件与数据库之间移动数据,3,21.1 简介,数据库是有组织的集成数据集合数据库管理系统提供了以与数据库的格式一致的方式存储、组织、读取和修改数据的机制。本章首先介绍有关数据库和是关系数据库的概念和知识,以及当前有代表性的关系数据库产品。 继而介绍一种高效

2、实用且功能强大的数据库访问技术ADO.NET。这是一组向.NET程序员公开数据访问服务的类,以一批创建分布式数据共享应用程序的组件形式提供给程序员,包含了许多非常实用的方法。 最后介绍访问数据源的LINQtoSQL类和IDE工具。LINQto -SQL可以操纵SQL Server数据库中的关系型数据,还可以有C#编译器的类型检查和IDE的智能感应特性。,4,21.2 数据库与关系数据库,一、数据库的基本概念 一个计算机系统是按照层次组织数据的,即由位组成字节,字节组成字段(域),字段组成记录,记录组成文件,文件组成数据库。 文件中每个记录至少有一个字段来唯一地标识,该字段叫做关键字(key)。

3、 一个记录描述一个实体(Entity),它可以是一个人,一个地方、一个事物或者一个事件。有关实体的信息需要管理和维护。,5,传统的文件组织方式存在的问题,数据的冗余和混淆 在多个数据文件中重复出现相同的数据为数据冗余,它导致数据存储空间的浪费和数据的不一致。 程序-数据的依赖性 是指数据文件和维护它的相关应用程序之间的过分依赖。 缺乏灵活性 传统的文件系统可以处理定义完好的报表,但对于特殊的表和临时定义的需求却无能为力。 安全性差 对数据缺乏控制和管理,实际上对访问和分发信息失控。 数据的共享性和有效性差 不同文件的信息相互没有联系,使得信息不能被共享和及时访问。,6,数据文件1,数据文件2,

4、数据文件n, ,应用程序1,应用程序2,应用程序n, ,文件 系统,文件系统阶段数据管理示意图,特点: (1)数据长期保留在外存(磁盘)设备上,便于反复操作 (2)程序之间有了一定独立性,通过文件名和数据打交道,不必 再寻找数据的物理存储位置 (3)文件的形式多样化,有了顺序、索引、链表随机存取文件 (4)数据的存取基本上以文件或记录为单位,7,数据库和数据库管理系统,数据库(Database)的定义:以特定格式存放的、以集中的和低冗余方式和较高的数据独立性来收集和组织,以便有效地服务于应用程序的数据集合 数据库管理系统(Database Management System)的定义:DBMS是

5、用以定义数据库、完成更新数据库的事务,从数据库中检索数据并控制数据库的有效性的一组集成化的程序。,8,数据库系统阶段的特点,数据共享 指多用户、多应用、多语言互相覆盖地共享数据集合,可以实现文件级、记录级数据项级的数据共享 面向全组织的数据结构化 按照某种数据模型将全部数据组织成一个结构化的互相关联的数据整体 数据独立性 数据库中的数据具有物理和逻辑独立性,把数据描述和定义从应用程序中分离出来,独立于应用程序而存在 可控数据冗余度 本阶段数据不必重复存储,节省存储空间,保证数据的一致性 统一数据控制功能 在多用户并发访问时,提供数据安全、数据完整性、并发和数据恢复控制,9,数据库系统的组成,数

6、据库是长期存储在计算机内有结构的大量的共享的数据集合。 用户指存储、维护和检索数据的各类使用者。又分为三类用户:最终用户、应用程序员、数据库管理员。 软件指负责数据库存取、维护和管理的各种应用软件的集合,通常叫做数据库管理系统(DBMS)。 硬件指存储数据库和运行数据库管理系统的硬件资源。,10,员工档案 姓名 地址 性别职务 ,工资单 基础工资 奖金、交税 其他支出实发工资 ,福利 人身保险 养老金计划 保健计划退休保障 ,数据库 管理系统,员工档案 应用程序,工资管理 应用程序,福利管理 应用程序,培训 专业培训 外语培训岗位培训 ,培训管理 应用程序,人事部,人事部,人事部,人事部,集成

7、的人力资源数据库,11,数据库系统的典型产品,大型机上巨型数据库的代表DB2 大型分布式数据库的代表Oracle 传统大中型关系数据库的经典SyBase 中小型分布式数据库的主力SQL Server 单用户多媒体小型数据库的典型Office Access 自由软件阵营小型数据库的代表MySQL,12,二、数据库的数据模型,数据模型数据模型是对客观事物及其联系的数据描述,即实体模型的数据化,是数据在数据库中排列、组织所遵循的规则,以及对数据所能进行操作的总体。 简单地说,数据模型是实体和实体之间联系的模型。具体地,数据库数据结构、数据库操作集合和完整性规则集合组成数据库的数据模型。 数据模型分为

8、三类:面向记录的传统数据模型、注重描述数据及其之间语义的语义数据模型和面向对象的数据模型。,13,传统数据模型,传统数据模型在20世纪六七十年代就发展起来了。主要有网络、层次和关系三种。 层次模型 是一种树状结构的实体与实体之间联系的数据模型,特点:有且仅有一个根节点,其他节点向下可与若干节点联系,但向上只能与唯一的一个节点相联系。如学校、系、专业。 网络模型 是一种网络结构,数据(实体)之间为网状形式。特点:至少有一个以上的节点无父节点,至少有一个节点的父节点多于1个,任何2个节点之间可有2种以上的联系。,14,关系模型,以数学理论为基础而构造的数学模型,把实体与实体之间的联系用二维表表示,

9、并称为关系或表。一般地,具有如下性质的二维表能够称为关系: 每一列中的数据必须具有相同的名字和类型; 表中行和列的顺序可以任意; 表中各行相异,不允许有重复的行; 表中的数据项是不可再分的最小的数据项。 若表中的一或多个字段在各个记录中的值是唯一的,则这些字段可指定为“主键”,用来标识表的行(记录)。,15,3、语义数据模型,语义数据模型发展的最初动机是克服传统数据模型偏重数据结构的缺陷,提供不受具体的实现结构限制、更多面向用户的模型。语义模型提供一种“自然”的机制来说明数据库的设计,同时更准确地表示实体(数据)和实体之间的关系。 语义数据模型提供了强有力的抽象构造机制,如概括和聚合。概括允许

10、把相似对象形成组,集中到一个更普遍的组对象上。聚合允许从对象的性质或属性中抽象出实体,如一个聚合对象地址由街道、城市、州、国家和邮编组成。 语义数据模型的典型是关系-实体模型(E-R)。,16,4、面向对象的数据模型,它起源于面向对象的程序设计语言。对象是客观世界实体的抽象描述,由信息和对数据的操作组合而成;类是对多个相似对象共同特性的描述;消息是对象之间通信的手段,用来表示对象的操作;方法是对象接收到消息后应采取的动作序列的描述;实例是由一特定类描述的具体对象。 面向对象数据模型吸收了语义数据模型中概括和聚合的概念,以及传统数据库管理中的共享、并发、查询语言等概念,形成了面向对象的数据模型,

11、提供了表示复杂对象的能力,可以在任意层次上嵌套各种类型的数据结构。,17,三、数据库的设计和实施,数据库的设计、建立是在管理信息系统的建设过程中完成的,所以数据库的设计过程要密切结合整个管理信息系统的开发过程。 根据用户需求研制一个数据库结构的过程称为数据库设计。其设计的过程过程如下:,需求分析和 数据分析,概念 设计,逻辑 设计,物理 设计,需求说 明和数 据说明,概念 结构,逻辑 结构,物理 结构,实施,18,数据库的概念设计,数据概念模型是在用户要求描述与分析的基础上以用户能理解的形式表示信息,它既独立于数据库逻辑结构,又独立于具体的DBMS。 实体关系(Entity-Relations

12、hip)模型是P.S.Chen于1976年提出的数据概念模型,在描述现实世界和数据库设计中被广泛应用,是一种语义模型。,19,实体关系模型,实体与属性 实体是组织所关心的事物,是 信息管理的对象,如单位、职工、项目等;属性是实体的特征,如职工的编号、姓名、年龄、性别、级别、岗位等。实体-属性之间的关系见下图。,职工,职工编号,姓名,所属部门,年龄,级别,20,实体之间的联系,现实世界中的实体之间是彼此联系的,这种联系有三种:1:1,1:m,m:n。如单位和负责人的联系是1:1,单位与其下属职工的联系是1:m,职工与所承担的项目的联系是m:n。用图形表示如下:,单位,领导,负责人,1,1,单位,

13、所属,职工,1,m,职工,承担,项目,m,n,21,E-R图,使用E-R图方法的核心是划分实体和属性,并确定实体间的联系。在一个E-R图中可以有多个实体,它们之间有联系。如工程项目(PROJ)、零件(PART)和供应商(SUPP)之间是多对多的联系。 在实际应用中使用E-R图方法的步骤是:(1)确定实体类型;(2)确定联系类型;(3)画出表示一个单位的E-R图模型;(4)确定属性;(5)将E-R图优化;(6)将E-R图转化为DBMS可以接受的数据模型。,22,E-R图的设计实例,在学校的学籍管理应用中,涉及了实体学生、宿舍、档案材料、班级和班主任。其E-R图见下图。各个实体之间的关系分析如下:

14、 一个宿舍可以住多个学生,每个学生只能住一个宿舍,故宿舍与学生之间是1:n的联系 一个班级可以有多个学生,每个学生只能属于一个班级,故班级与学生之间是1:n的联系 一个班主任可以有多个学生,每个学生只对应一个班主任,故班主任与学生之间是1:n的联系 学生与其档案材料、班级与班主任之间都是为1:1的联系 各个班级和上课占用的教室之间为m:n的联系,23,班级,组成,学生,1,n,教室,上课,档案材料,m,n,归档,1,1,班主任,1,管理,1,宿舍,1,住宿,n,指导,n,1,学籍管理局部应用的子E-R图,24,数据库的逻辑设计,数据库的逻辑设计主要是把概念结构转换为某个DBMS所支持的数据模型

15、上的结构表示,称为逻辑模式。例如,关系模型的逻辑结构为一组关系模式。因而从概念结构到关系模型逻辑结构的转换,就是从E-R图转换为关系模型。一个实体对应于一个关系模式,实体的属性就是关系的属性。,25,从E-R图到关系数据模型的转换,两个实体之间联系的转换 如“教研室”与“教员”之间存在着1:n联系,这种联系的建立是在“教员”关系中增加一个表示“教研室”关系的关键字属性,如教研室号。这样,“教员”关系模式可表示为:教员(教员号,教研室号,姓名,性别,年龄,.)。教员关系构成一个二维表,每一列是关系中的一个属性,如教员号、姓名等,每个教员的信息称为该表中的一行(或一个记录)。 再如,学生和课程之间

16、存在m:n联系,要引入新的关系“选课”,得到的关系模式为:学生(学生号,学生名,.)、课程(课程号、课程名、.)、选课(学生号,课程号,成绩)。,26,关系模型,关系型数据库是由关系模型确定的,关系模型由若干个关系组成,每个关系从结构上看是一个二维表,即把某记录类型的记录集合写成一张二维表,表中的每行表示一个实体对象,每一列对应一个实体属性,表中的内容为一个关系。,27,数据库的物理设计,对于给定的数据模型选取最合适应用环境的物理结构的过程,称为数据库的物理设计。物理设计依赖于具体的计算机和DBMS。 物理设计的主要内容有: 从具体的DBMS所提供的各种数据存储结构中选取合适的存储结构; 确定

17、对数据存储建立哪些存取路径和手段,如次关键字和索引的位置; 确定数据的存储介质和存储分配的有关参数。,28,数据库的实现,数据库的实现是指根据逻辑设计所确定的逻辑结构和物理设计所确定的物理结构来具体地实现数据库,具体内容有: 用DBMS所提供的数据描述语言DDL对逻辑设计和物理设计的结果进行描述,包括数据的描述、记录的描述、记录间联系的描述以及物理结构的各种描述; 数据的输入; 数据库的试运行,用DBMS提供的数据操纵语言DML和应用程序对数据库进行各种操作。,29,数据字典,数据字典是数据库管理的重要工具。字典的内容是关于数据的数据,即含有管理数据定义的数据库,其内容包括组织数据库的结构、数

18、据元素及其他特征。例如包括所有数据记录类型的名称和描述,他们的内部关系及用户存取信息需求概要,应用程序的使用,数据库的维护和安全。 数据字典由数据库管理员管理,也经常被以后查询和调整。,30,四、关系数据库范式理论,关系规范化理论也称为数据库模式设计理论,它主要遵循2个原则:关系的等价替代数据的最小冗余 通过关系规范化使数据模式设计得既稳定又灵活。所谓稳定,指数据模式不随存储硬件的更新或存储方式的改变而改变。所谓灵活,指数据结构允许方便地调整、扩充。,31,下面的“Supplier”就是一个不好的关系模式:Supplier(SName, Saddress, Item, Price) 其中各属性

19、分别表示供应商名、供应商地址、货物名称、货物价格。一个供应商供应一种货物则对应到关系中的一个记录。上述关系模式存在如下的问题:数据冗余,一个供应商每供应一种货物,则其地址重复一次。更新异常,由于地址重复,当该供应商改地址后,我们要对每一条记录的地址都做修改。插入异常,如果某供应商没有供任何货物,则无法登录其名字和地址。删除异常,若某供应商所供应的所有货物都被删除,则将丢失该供应商的名字和地址。,32,函数依赖和传递依赖,设有关系R,A和B是R的两个属性,若对于A的每一个值,B必然有一个唯一的值与之对应,则称关系R的属性B函数依赖于属性A。记为AB。例如”供货商“关系 S (S#, SName,

20、 SAddress) 其中,SName和SAddress就依赖于S#,即S#确定了相应的SName和SAddress。,33,设关系R有A、 B和C是R的三个属性,若AB且BC,则称C传递依赖于A。例如“教师任课” 关系 CTO (C#, TName, TAge, Office) 其中,C#(课程编号)确定了TName(教师名),而TName又确定了TAge(年龄)和Office (办公室),则称属性TAge和Office函数传递依赖于C#。,传递依赖,34,规范化设计方法,在数据库的数据结构设计中,如果没有重复出现的数据组项,则称为规范化。满足一定条件的关系模式被称为范式(Normal Fo

21、rm)。1971 1972年,E.F.CODD系统地提出了第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的概念,1974年,他又和Boyce共同提出BCNF,1976年Fagin提出了4NF,后来又有人提出了5NF。,35,规范化设计方法(续),一个低级范式的关系模式,通过分解方法转化为若干个高一级范式的关系模式的集合,称为规范化。 对于非规范化的关系,首先把所有非平坦的数据结构分解为若干个二维表形式的数据结构,并指定关键字。 通常在规范化关系的工程中,通常以第三范式作为存储结构。,36,第一范式(1NF),如果关系R的每个属性都是不可分割的数据项,则称这个关系是第一范式(Firs

22、t Normal Form)。记为R 1NF。 下述关系模式 TF(T#, TName, Tage, Cnum, CName, CDate, TSalary) 就不满足1NF。它包含了两类信息:关于教师的固定信息(T#, TName, Tage, TSalary)和教师所上课程的可变信息(Cnum, CName, CDate)。这两类信息出现在一个表中必然出现许多冗余信息,如同一个教师会有许多所上课程的信息。而把该关系模式分解为两个才能满足1NF的关系模式,即: TF(T#, TName, Tage, TSalary) TC (T#,Cnum, CName, CDate),37,第二范式(2N

23、F),如果关系R是1NF的,且关系的非主属性完全函数依赖于R的每一个候选关键字,则称R是2NF (Second Normal Form)。记为R 2NF。当一个关系的关键字是一个复合关键字时,可能出现一个非关键字字段函数依赖于关键字子集,从而使关系中包含非主属性部分依赖于候选关键字,导致2NF遭到破坏。例如,如下的关系模式 SCT (S#, C#, Grade, TName, TAge, Office) 是1NF的,但不是2NF。因为S#和C#是关系SCT的复合关键字(候选关键字),TName是关系SCT的非主属性,且C#TName,不满足2NF的定义。,38,上述问题的解决办法:对于复合关键

24、字的数据模式,必须确保所有的关系中的非关键字属性完全依赖于复合关键字,必要时把它分解成若干都属于2NF的关系,而每一个关系中的非关键字属性完全函数依赖于复合关键字。如SCT可分解为如下关系模式SC(S#,c#,Grade)CTO(C#, TName, TAge, Office),39,第三范式(3NF),如果关系R是2NF的,且没有任何R的非主属性是传递依赖于R的任何一个候选关键字,则称R是3NF (Third Normal Form)的。记为R 3NF。 如果出现传递依赖,则会造成关系的属性间不是相互独立的,即在某教师担任某门课程之前无法登记其年龄等,此时没有主关键字值。解决的办法是对关系C

25、TO进一步分解,变为如下两个满足3NF的关系 CT (C#, TName) TO (TName#, TAge, Office),40,数据库管理软件SQL Server,一、 SQL Server的基本成分 在SQL Server数据库中,每一个应用程序由7种基本的数据库对象构成,分别是: 表 (Table) 索引 (Index) 视图 (View) 图表 (Diagram) 规则 (Rule) 触发器 (Trigger) 存储过程 (Stored Procedure),41,1、表,表是关系数据库的基本对象,没有表就不能建立其他对象。在一个数据库中可以根据需要建立若干张表,将应用所需的数据存

26、储在表中。 SQL Server中的表是一种有关特定实体的数据集合。对每种实体分别使用不同的表,意味着每种数据只需存储一次,这能够提高数据库的效率,减少数据输入错误。 表以行(称为记录)、列(称为字段)格式组织数据。如下图所示的表中,每一行是一个顾客记录,记载了一个顾客的信息,每一列是一个字段,包含了同类的信息,如序号、姓名、性别等。,42,2、索引:是根据指定的数据库表列建立起来的顺序,它提供快速访问数据的途径,并且可以监督表的数据,使其索引所指向的列中的数据不重复。 3、视图:看上去与表似乎一样,具有一组命名的列和数据项。但它是虚拟的表,在数据库中并不存在。由查询数据库的表的结果所产生,它

27、根据要求只查出允许用户看到的信息,可以利用此控制用户对数据的访问,通过视图只显示那些需要的数据信息。,43,4、图表:是数据库中表与表之间的关系示意图,利用它可以编辑中表与表之间的关系。 5、规则:规则是对数据库表中是数据信息的约束,限定的是表中的列的取值范围。 6、触发器:是一个用户定义的SQL语句的集合。当对一个表进行插入、更改、删除时,这组语句就会自动执行。非常类似于C#的事件处理机制。 7、存储过程:是为完成特定的功能而汇集在一起的一组SQL语句,是经编译后存储在数据库中供用户调用的SQL程序。,44,视图和数据源之间的关系,员工档案 姓名 地址 性别职务 ,工资单 基础工资 奖金、交

28、税 其他支出实发工资 ,福利 人身保险 养老金计划 保健计划退休保障 ,企业人力资源数据库 (数据源),数据筛选 格式整理,45,21.3 关系数据库概述:Books数据库,下面利用SQL Server在建立一个Books数据库。这个数据库存储最新的Deitel公司出版物信息。该数据库由三张表构成,即: 作者表Authors (AuthorID作者唯一的、名和姓) 图书表Titles (ISBN、BookTitle书名、EditionNumber版本号和Copyright版权信息) 作者书号表AuthorISBN (AuthorID、ISBN) 关于每张表的结构和它们之间的关系参见下面的截图。

29、,46,47,48,49,50,在SQL Server中建立Books数据库,启动数据库SQL Server 2005开始程序SQL Server 2005SQL Server Management Studio弹出连接到服务器子窗口,51,启动数据库SQL Server 2005(续),点击下面“连接”按钮,进入SQL数据库集成管理运行界面,52,点击左侧“对象资源管理器”子窗口中的数据库图标右键,弹出,53,若为该数据库指定所有者,则点击所有者项的按钮,弹出“数据库所有者对话窗口”,查找现有的所有者,点击右侧浏览按钮,弹出,54,指定数据库文件的位置,在“新建数据库”窗口的右下部“数据库文

30、件”文本列表框中,显示了SQL Server系统为该新建数据库建立的两个文件:用于存放数据的baseball.mdf和记录对本数据库操作的baseball_log日志文件。在以后复制、传输、操作数据库时,都必须保证这两个文件同时在一起,否则将无法打开和操作数据库。所以要指定这两个文件在同一个目录中。具体操作参见下图。,55,单击“数据库文件”文本列表框中每个文件最右侧的 按钮,在弹出的“定位文件夹”窗口中选中要设定的目录路径,并按确定按钮确认。,. . .,56,这些操作结束后,点击本窗口右下角的“确定”按钮。完成新建数据库的操作。,57,在回到SSMS主界面后,可以在左侧的对象资源管理器中的

31、树形列表中看到新建的数据库,如Books和Bassball。但此时的库时空的,需要建关系表。,58,指定要打开的数据库,点击其左侧的复选框,使其中的加号“+”变为减号“-”,从而展开该库的各项内容如下:,59,选中“表”的图标,单击右键,出现弹出菜单,从中选择“新建表”,在窗口的中心区,出现定义表结构的表格,其中每一行对应数据表中的每一列,包括列名称、列的数据类型和是否允许为空。,60,可以根据需要点击每列的数据类型栏的右侧弹出下拉菜单,在其中选择所需要的数据类型。参见下图:,61,选中Authors表后,单击鼠标右键,在弹出的子菜单中,选择“打开表”进入编辑数据表界面,可以录入、修改、查看各

32、项数据记录。,62,在编辑数据记录完成后,单击鼠标右键弹出子菜单,从中选择“!执行SQL”把记录写入数据表。,63,类似地打开其它两张表,完成数据的录入,64,21.4 SQL查询语句,SQL是一种介于关系代数和关系运算之间的结构化查询语言,其功能不仅仅限于查询,还是一种通用的、功能极为强大的关系数据库语言。 数据库查询是数据库的核心操作。SQL语言提供了SELECT语句来进行数据库查询,其一般格式为:SELECT ALL|DISTINCT,目标列表达式FROM,WHEREGROUP BY HAVING ORDER BY ASC | DESC ;P515,65,常用的SQL命令与关键字,SQL

33、还有其他许多关键字,分为命令或谓词,如BETWEEN、HAVING、IN、JOIN、 LIKE等,66,单击左上角的新建查询按钮,进入SQL查询界面。,67,输入SQL查询语句:最简单的查询SELECT,68,点击工具栏的“!执行”按钮,得到查询结果如下:,69,SQL语句的说明,谓词FROM后面是被查找的表的名称 SELECT后面的 * 表示该查询从指定表中选择所有行和列。如果要指定读出指定表中的若干列,则在这里要写出每个列的名称,各列之间用逗号分隔。例如:SELECT AuthorsID, LastName FROM Authors则返回的查询结果就只有AuthorsID和LastName

34、 两列。参见下图。,70,从表中选择若干列的查询结果,71,WHERE子句的使用,许多查询要根据特定的一些选择条件(正式名称为“谓词”)来选出指定数据库中的记录。为了指定该查询的选择条件,SQL在一个SELECT查询中使用可选的WHERE子句。包含一个选择规则的查询基本形式为: SELECT columnName1, columnName2,FROM tableName WHERE criteria 例如,为了选择Titles表中作者的CopyRight大于2007的Title、EditionNumber、CopyRight列,使用如下的查询语句:,72,增加选择条件的查询,SELECT Bo

35、okTitle, EditionNumber, CopyRight FROM Titles WHERE CopyRight 2007,73,WHERE子句的条件和逻辑运算符,WHERE子句条件可能包含运算符:、=、=、LIKE、AND、OR、NOT等。 运算符LIKE使用百分号(%)和下划线(_)执行模式匹配。模式匹配允许SQL搜索指定字符串。 百分号(%)指示模式字符串中的%符号位置可以使用0个或多个任意字符。例如,下列查询搜索Authors表中的所有以D开头的作者所在的行。,74,百分号%指示的模式字符,75,模式字符下划线_指示的是一个单一字符在模式中的位置。例如,下面的查询语句查找其姓

36、以任何一个字符开头,后面紧接着是一个字母y、其后有任意数量的附加字符的所有作者的记录。,76,WHERE子句的逻辑条件运算查询,77,ORDER BY子句,在SELECT查询语句中,可以使用ORDER BY子句对查找到的结果记录数据进行排序。该子句最简单的形式是: SELECT columnName1, columnName2,FROM tableName ORDER BY columnASC|DESC其中,ASC指定升序(按照指定的列从低到高),DESC指定降序(按照指定的列从高到低)。系统默认的排序方式是升序(ASC),所以关键字ASC可以省略不写。 例如,为了获得对姓按升序排序的列表,使

37、用下列查询语句:,78,ORDER BY子句的运用:ASC,79,ORDER BY子句的运用:DESC,80,ORDER BY子句的运用:多项的排序,81,WHERE与ORDER BY的组合应用,可以在一个查询中组合使用WHERE和ORDER BY子句,以便达到更灵活和复杂的查询功能。 例如,在书目表Titles中,想查找出所有书名中含有“How to Program”的书记录,而且要求找到的这些书名按照升序排列。则可以输入下列的SQL查询语句:,82,WHERE与ORDER BY的组合应用,83,BETWEEN AND子句的应用,在SELECT查询语句中可以使用谓词BETWEEN AND 子

38、句以便查找某个被查域的属性值在指定范围内的全部记录。该谓词的BETWEEN后面是查询范围的下限(即最低值),AND的后面是查询范围的上限(即最高值)。 比如,某些应用场合的2030年龄段内的人员、工资收入在20004000范围内的员工等。 本数据库中,指定图书版权CopyRight2008至2009年度的范围内,则设计SELECT查询语句如下:,84,BETWEEN AND子句的应用,85,合并多表数据INNER JOIN,86,INSERT 语句,SQL不仅仅是执行查询,还可以执行对表进行插入、修改和删除数据的操作。 一个INSERT语句可以向数据表中插入一条新记录。 INSERT语句的最简

39、单形式是: INSERT INTO tableName ( columnName1,columnName2, , columnNameN )VALUES ( values1, values2, , valuesN )其中,tableName是要插入记录的表名。其后跟着位于括号中以逗号分隔的列名列表表示要为该新纪录的那些域赋值。如果插入操作的顺序完全等同于该表定义的各个列的顺序,则可以省略此列表。列表后的VALUES指出要用其后的括号中的值列表分别赋给各个列名表。这些值的顺序、类型和范围必须与插入表名后的括号中的列名表中的各个域名一一对应。参见下图的实例。,87,INSERT 语句,88,UPD

40、ATE 语句,SQL的UPDATE语句修改表中的数据。 UPDATE语句的最简单形式是: UPDATE tableNameSET columnName1 = values1, columnName2 = values2, , columnNameN = valuesNWHERE criteria其中,tableName是要更新记录的表名。其后跟着SET关键字和以columnName = values的形式出现且以逗号分隔的字段名-值对。可选的WHERE子句指定要更新哪一行(或哪些行)。参见下图的实例。,89,UPDATE语句应用示范,90,UPDATE语句修改一批记录,91,UPDATE语句修

41、改一批记录的结果,92,调用DELETE前表中的内容,93,DELETE语句,DELETE语句删除表中的行(即记录)。它可以删除一行或多行,也就是说,删除表中所有满足条件的行。DELETE语句的最简单形式是: DELETE FROM tableName WHERE criteria其中,tableName是要更新记录的表名。可选的WHERE子句指定要删除哪些行的规则。如果省略WHERE子句,则DELETE语句会作用于所有的行。参见下图的实例。,94,DELETE语句,95,DELETE语句的运行结果,96,21.5 ADO.NET概述,ADO是ActiveX Data Object的缩写 了解

42、ADO.NET ADO.NET组件 ADO.NET结构 .Net数据提供程序 DataSet简介,97,创建和连接数据库,VS2008内置了Express版本的SQL Server2005,用于学习和开发使用,Express版本的SQL Server并没有提供管理工具(Management Studio),可以使用VS2005的服务器资源管理器来操作数据库,也可以在微软网站下载免费的Express版本的SQLServer Management Studio。网址为:http:/ 首先按照以下步骤连接到本机的SQL Server 2005 Express。,98,ADO.NET简介,ADO.NE

43、T的名称起源于ADO(ActiveX Data Objects),是一个非常广泛的类组,以往的Microsoft访问数据库基本都使用该技术。ADO.NET与ADO的作用相同,但是功能更强大,更容易使用,而且ADO.NET中的类、属性和方法与ADO也有很大的不同。ADO.NET比ADO的功能有很大的改进,其优点主要表现在以下几个方面: 可以简单的访问关系数据。ADO.NET的主要目标是可以提供对关系数据的简单访问,它与数据源断开连接时也可使用数据,这主要是基于ADO.NET对数据集(DataSet)的支持。数据集的概念在本章的后面会有详细的讲解。 提供对XMI的支持。随着XML的应用越来越广泛,

44、和XML进行交互是数据访问的重要部分。ADO.NET提供了丰富的类实现XML数据的读写。,99,ADO.NET简介(续),可扩展性强。ADO.NET提供了几种内置的.NET数据提供者,有专门用于连接SQL Server和Oracle数据库的类,也有支持通用数据接口ODBC和OLE DB。因此通过内置的数据提供者,ADO.NET支持几乎所有的数据库或数据格式,具有很香的扩展性。 支持多层架构和工厂模式。多层架构是当今商业和电子商务应用程序普遍使用的体系结构,ADO.NET通过使用XML格式的数据对其提供支持。ADO.NET提供了工厂模式,可以在不修改代码的情况下,实现数据库的移植。下 图显示了A

45、DO.NET在.NET Framework中起的作用。,100,ADO.NET概述,ADO.NET的初衷是为了适应数据为中心的应用程序设计 网络的发展和多媒体的应用导致数据资料的激增 数据量的增加导致数据存储的重要性日益突出 以数据为中心的应用程序设计正成为一种趋势 ADO.NET一种高效实用且功能强大的数据库访问技术。这是一组向.NET程序员公开数据访问服务的类,以一批创建分布式数据共享应用程序的组件形式提供给程序员,包含了许多非常实用的方法。 ADO.NET架构 ADO.NET对象模型(核心) 数据提供程序(DataProvider) 数据集(DataSet),101,ADO.NET的构成

46、,数据提供程序还包括ODBC和ORACLE两种,102,Connection Command Data Reader DataAdapter,数据集,.Net 数据提供程序,DataTable DataRowCollection DataColumnCollection ConstraintCollection DataRelationCollection,ADO.NET对象模型(核心),103,ADO.NET的对象,每个数据提供程序都有自己的Connection和Command对象,具体选用那组根据需要。 Connection类:在代码和容纳数据的数据存储之间提供了基本的连接 Command

47、类:用于描述SQL语句或者通过其Connection类执行的存储过程 DataReader:从数据源中获取只读的数据流 DataAdapter:功能最强大、更复杂的对象,可以读取、改变数据源,104,ADO.NET的对象模型,ADO.NET简介,ADO.NET对象模型(核心),105,ADO.NET的主要组件,ADO.NET提供了两个组件用来访问和处理数据:NET Framework数据提供程序和数据集(DataSet)。 .NET Framework数据提供程序包含用于访问各种数据源的数据对象,是专门为数据处理以及快速的只进、只读访问数据而设计的组件,使用这些数据提供程序可以对数据库进行操作

48、,检索、查询、更新、删除数据库中的数据等操作。目前有4种类型的数据提供程序,具体要使用哪种数据提供程序,要根据使用的是什么数据库。数据提供程序使用范围见下表。,106,107,用Connection对象建立数据库连接,Connection对象用于打开与数据库的连接,以便对其执行命令。不同的.NET数据提供程序都有自己的连接类,见下表。,108,用connection对象建立数据库连接步骤,在.NET 应用程序中,创建数据连接分为三步: 1)定义连接字符串:该串包括要连接的数据库提供者的名称、登录信息、要使用的数据库名称。还要先引入相应的命名空间。连接SQL Server数据库的连接字符串通常为

49、:“Data Source=服务器名; Initial Catalog=数据库名; uid=用户名;pwd=密码”;如果服务器是本机,可以使用”.”代替计算机名或IP地址。用户名也可以写成user id。密码如果为空可省略pwd,pwd还可以写成password。,109,建立数据库连接步骤(续),要连接到本机的数据库”Book”中,连接字符串可以写为:string conString=“Data Source=. Initial Catalog=book;uid=sa;pwd=1234”; 2)创建Connection对象:使用定义好的连接字符串创建之:SqlConnection Connection 对象名=new SqlConnection (连接字符串);示范代码如下:SqlConnection Con=new SqlConnection ( conString ); 3)打开与数据库的连接: 调用SqlConnection的open方法,即 con.open ( );注意,使用完数据库后要调用Connection对象的关闭方法:con.close ( );,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报