数据库基础与ADONE.ppt

上传人:小飞机 文档编号:6050186 上传时间:2023-09-18 格式:PPT 页数:54 大小:493KB
返回 下载 相关 举报
数据库基础与ADONE.ppt_第1页
第1页 / 共54页
数据库基础与ADONE.ppt_第2页
第2页 / 共54页
数据库基础与ADONE.ppt_第3页
第3页 / 共54页
数据库基础与ADONE.ppt_第4页
第4页 / 共54页
数据库基础与ADONE.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《数据库基础与ADONE.ppt》由会员分享,可在线阅读,更多相关《数据库基础与ADONE.ppt(54页珍藏版)》请在三一办公上搜索。

1、ASP.NET程序设计教程第8章 数据库基础与ADO.NET,河南城建学院计算机科学与工程系,2,概 述:,没有数据库的网页,可说完全静态且无法与浏览者产生互动。反过来说,网页结合数据库的好处是让网站“活”起来,不但可有互动,也可节省设计人员的维护时间。但是网页结合数据库的设计,有一定的门槛,重要的是设计人员必须拥有数据库设计经验,尤其是程序设计,因为大部分的应用皆须写程序,没有较佳的辅助工具。,3,概述(续),几乎每一种商用应用程序都依赖于某种数据存储。不论使用的是Excel电子表格、文本文件,还是诸如 SQL Servr 或 Oracle这样的关系型数据库管理系统(RDBMS),数据的读取

2、和存储于应用程序的成功至关重要。本章介绍通过ASP.NET和ADO.NET访问数据,您将学习以下内容:什么是数据库?数据库的类型和何时应用数据库。ASP.NET中可用的数据库访问工具。,4,第8章 目录,内容概述8.1 数据库基本概念8.2 在SQL Server 2000中使用数据库8.3 SQL的数据查询8.4 存储过程8.5 ADO.NET8.6 ASP.NET数据库应用程序开发,5,内 容,本章的主要内容包括三方面:一是数据库的基本概念。二是常用的数据库管理系统Microsoft SQL Server 2000的使用要点。三是在ASP.NET中使用数据库的基本技术ADO.NET框架和方

3、法。本章的内容给后续有关数据库操作的章节提供了必要的理论和技术基础。,6,1 什么是数据库,简单地讲,数据库是一个信息集合。开发应用程序时可以使用两种数据库。第一种是平面文件。在平面文件数据库中,所有的数据都存储在一个表中。Excel电子表格以及用逗号分隔的文本文件就是平面文件数据库。平面文件适合小型的应用程序,如果需要存储大量的数据或执行平面文件间的查询时,平面文件就无法实现。第二种数据库是关系型数据库。为满足大型企业级应用程序的需要(无论是客户/服务器类型的应用程序还是基于Web的应用程序)。关系型数据库也是表(或平面文件)的集合,只是当两个表包含相同的信息(通常是唯的数字标识符)时,可以

4、将它们关联起来。,7,一些大型的关系型数据库,下面列出了一些大型的关系型数据库:Microsoft SQL Server;Oracle;Informix;Sybase;MySQL。(SQL Server 2000 和Access 的简单介绍),8,1.2 结构化查询语言SQL,SQL 概述:要操作数据源中的数据,可以使用结构化查询语言(Structured Query Language)。SQL 几乎是所有大型数据服务器都支持的数据操作语言,它提供一些可以帮我们快速的执行数据查询、更新、删除、插入等数据操作的叙述;要撰写操作数据的应用程序,SQL 语言是非常重要的。SQL 的用法非常灵活,在这

5、里我们不深入讨论,我们只介绍比较常用的SQL 叙述。(注意,以下操作在SQL Server 2000 查询分析器中进行)结合“毕业设计管理系统”说明。,9,1.Select:,Select 语句可以从资料源传回我们所指定的字段,其语法如下所示:Select 字段1,字段N From 数据表名称 如果要将所有的字段传回,则可以使用*来代表。例如我们要将数据库:Pubs的 employee 数据表中的所有字段传回,则使用下列叙述:Select*From employee 例如我们想要传回 sales 数据表中STOR_ID 以及ORD_NUM 这两个字段的数据,可以使用如下叙述:select ST

6、OR_ID,ORD_NUM from sales 利用School_bysj_QX库演示,10,利用Where 子句来过滤数据,利用Where 子句可以过滤记录,其语法如下所示:Select 字段一,字段N From 数据表名称 Where 条件 条件可以是=、=、$5500 AND TYPE=business 使用BETWEEN关键字指定范围 例:查询出版日期在1/1/199112/31/1991之间的书号和出版日期。Select title_id,pubdate From titles Where pubdate BETWEEN 1/1/1991 AND 12/31/1991,11,使用

7、LIKE 关键字进行模糊比较,查询,在查找中,有时候需要对字符串进行比较,使用LIKE 运算符可以完成对字符串的模糊匹配。例1:查询所有包含BOOK 的店名信息。Select stor_name FROM STORES WHERE stor_name LIKE%BOOK%例2:查询以B、D或F开头的店名信息。Select stor_name FROM STORES WHERE stor_name LIKE BDF%利用School_bysj_QX库演示,12,Select 语句连接查询:,一次从多个表中查询记录,就需要用到连接查询。1.非限制连接 非限制连接是指不带WHERE子句的连接。看下例

8、:select title,pub_name FROM Titles,publishers(选择了Pubs库中的Titles,publishers两个表)2.自然连接(内结合)自然连接(INNER JOIN)也叫内连接。例:显示每个出版社所出版的书名。select pub_name,title FROM Titles,publishersWhere titles.pub_id=publishers.pub_id,13,连接查询(续):,或者:select pub_name,title FROM Titles INNER JOIN publishers ON titles.pub_id=publ

9、ishers.pub_id 3.外结合(外连接:OUTER JOIN)外连接OUTER JOIN允许限制一个表中的行,而不限制另一表中的行。例:显示所有的书名(无销售记录的书也包括在内)。select T.title_id,title,qty FROM Titles T,Sales S WHERE T.title_id*=S.title_id 注意:上边的句子中包含了表别名T、S,它不会影响最终的结果,但却能简化SQL子句。,14,连接查询(续2):,例句改成如下形式(注意“*”的位置):select T.title_id,title,qty FROM Titles T,Sales S WHE

10、RE T.title_id=*S.title_id 比较两条语句及其显示结果,发现第一例子中有两行数据的QTY是null,第二个例子无NULL.外连接的方法有两种。A*=B 包括第一个表A的所有行在内,而不考虑语句限制,称为左结合 LEFT OUT JOIN A=*B 包括第二个表B的所有行在内,而不考虑语句限制,称为右结合 RIGHT OUT JOIN,15,2.Insert,Insert 可以将新的纪录加入数据源中,其语法如下所示:Insert Into 数据表名称(字段1,字段2,.字段N)Values(字段1,字段2,.字段N)在插入数据时应注意以下几个问题:1.输入项的顺序和数据类型

11、必须和表中列的顺序和数据类型相对应。2.要保证表定义的非空列(NOT NULL)必须有值。3.字符形和日期形数据插入时要加单引号括起来。见下页示例:(利用TSGL.DBF)(以下操作在在SQL Server 2000 企业管理器中进行。),16,Insert 的例子:,例如下列指令在图书的分类统计库(fltj)中增加一条记录。INSERT INTO fltj(大类,类名,册数,借出数,款额)VALUES(CC,计算机,500,20,2222.22)数据表后面的字段可以省略。如果省略表示全部的字段都要输入,并且必需按照字段的顺序来输入。INSERT INTO fltj VALUES(CC,计算机

12、,500,20,2222.22),17,3.Delete(删除记录),Delete 命令可以删除数据源中的纪录,其语法如下所示:Delete 数据表名 Where 子句 特别注意如果没有设定Where 子句的条件,则会将所有数据表中的纪录全部删除。见下例,删除分类统计(fltj)表中大类=CC DELETE FROM fltj WHERE(大类=CC),18,4.UPDATE(更新),Update 语句可以更新数据源中纪录的数据,其语法如下所示:Update 数据表名称 Set 字段一=新值,.字段N=新值 Where 子句 例如下列语句将图书的分类统计库表(fltj)中“类名”字段为“马列主

13、义”的纪录,将其“马列主义”更改为:“毛泽东思想”。Update fltj Set 类名=毛泽东思想 Where 大类=A 注意如果没有 Where 大类=A 子句,SQL语句将修改表中所有记录。,19,8.4 存储过程,”过程“也称为子程序,存储过程是包含在数据库中的。存储过程被用于不同的数据库中。在SQL Server2000 和 ACCESS中都使用存储过程,尽管两者创建存储过程的方法不同。在SQL Server2000中创建存储过程:打开“企业管理器”,选中一个数据库和数据库表,选“操作/创建存储过程”菜单。见下页图:提示:SQL Server2000 包含了大量内置的存储过程。其大部

14、分都比自己创建的复杂的多。,20,使用存储过程的原因,既然SQL语句自己能够在ASPNET中使用,我们为什么还要创建存储过程呢。主要有下面的因素,其重要性根据不同的应用程序而不同:模块化编程;执行速度快;降低网络流量;提高应用程序的安全性。将SQL语句转换为存储过程,不仅解决了以上所有这些问题,还提供了其它好处,即使是一行SQL语句也将通过转换为存储过程而受益。,21,创建存储过程(1)企业管理器,22,创建存储过程(2)新建存储过程,23,基本语法,创建存储过程的基本语法格式如下:CREATE PROCEDURE 参数名 数据类型 VARYING=默认值OUTPUT WITH ENCRYPT

15、ION|RECOMPILE|ENCRYPTION,RECOMPILE AS SQL语句其中各参数含义(见教材238页),24,基本语法中各参数说明:,参数名:定义存储过程的输入或输出参数。要指定数据类型,多个参数定义要用逗号“,”隔开。在调用存储过程时该参数将由指定的参数值来代替,如果执行时未提供参数值,则使用默认值作为实参,默认值可以是常量或空值(NULL)。OUTPUT:指定此参数为输出参数。VARYING:指定输出参数是结果集,专门用于游标作为输出参数。WITH ENCRYPTION:对存储过程进行加密。WITH RECOMPILE:对存储过程重新编译。执行存储过程的基本语法格式如下:E

16、XECUTE,25,存储过程示例一:,例1:创建一个存储过程,该过程返回所有作者以及他们的文章和出版社信息。USE pubs/*使用psbS数据库*/CREATE PROCEDURE xp_au_ti_pub_Info/*创建存储过程*/AS SELECT au_lname,au_fname,T.title_id,pub_name FROM authors A,titleauthor TA,titles T,publishers P WHERE A.au_id=TA.au_id AND T.title_id=TA.title_id AND T.pub_id=P.pub_id GO,26,执行存

17、储过程,可以在查询分析器中调用存储过程,语句如下:USE pubs EXECUTE xp_au_ti_pub_Info/*存储过程名*/(在查询分析器中调用)返回的结果为一个表。*也可以在项目 Storweb 的页面文件中调用存储过程,页面文件名为:Ex81_stor.aspx。事件中的代码见下页。,27,页面文件中的代码,private void Page_Load(object sender,System.EventArgs e)/设置连接串.SqlConnection objConn;objConn=new SqlConnection(data source=(local);initia

18、l catalog=pubs;user id=sa;password=;);SqlDataAdapter objCommand=new SqlDataAdapter(xp_au_ti_pub_Info,objConn);/存储过程名:xp_au_ti_pub_Info DataSet DS=new DataSet();/填充数据到Dataset,并将数据集合命名为 Author InformationobjCommand.Fill(DS,Authors Information);/绑定到表格中MYDataGrid.DataSource=DS.TablesAuthorS Information.

19、DefaultView;MYDataGrid.DataBind();,28,存储过程示例二(带参数):,例2:创建一个存储过程,通过作者的姓名查找作者以及他们的文章和出版社信息。(带参数)CREATE PROCEDURE xp_author_Info/*创建存储过程*/lastname varchar(40),firstname varchar(20)AS SELECT au_lname,au_fname,T.title_id,pub_name FROM authors A,titleauthor TA,titles T,publishers P WHERE A.au_id=TA.au_id

20、AND T.title_id=TA.title_id AND T.pub_id=P.pub_id AND au_fname=firstname AND AU_lname=lastname,29,执行存储过程2,在查询分析器中调用存储过程,语句如下:USE pubs EXECUTE xp_author_Info DeFrance,Michel 调用的时候跟参数:DeFrance,Michel 返回的结果为一个表。*也可以在项目Storweb的页面文件中调用,页面文件名为:Ex82_stor.aspx。事件中的代码见下页。,30,存储过程示例三:,例3:创建一个存储过程返回某个书店的购买数量。US

21、E pubs/*使用psbS数据库*/CREATE PROCEDURE xp_qty_sum/*创建存储过程*/stor_id char(4),sum int OUTPUT AS SELECT ord_num,payterms,title_id,qty FROM Sales WHERE Stor_id=Stor_id SELECT sum=sum(qty)FROM sales WHERE Stor_id=Stor_idGO,31,执行存储过程三,在查询分析器中调用存储过程,语句如下:USE pubsDECLARE total_qty varchar(20)EXECUTE xp_qty_sum

22、6380,total_qty OUTPUTSELECT 销售信息=销售总数为:+total_qty(DECLARE 语句声明变量),32,2.在ACCESS 中创建存储过程,ACCESS也支持存储过程,但将其称为查询。例:打开“FPNWIND.MDB”库,创建一个存储过程:命名为:“查询1”,33,8.5 ADO.NET,ASP.NET及其他Web开发语言提供了一套访问数据库的工具,使用这些工具可以连接到数据库,并使用SQL或其他可以同数据交互的工具来操纵其中的数据,在ASP.NET中,ADO.NET 是访问和操纵数据库的数据的媒介。ADO.NET 的特色 ADO(ActiveX Data O

23、bject)对象是继ODBC(Open Database Connectivity,开放数据库连接架构。)之后微软主推存取数据的最新技术,ADO对象是程序开发平台用来和OLE DB沟通的媒介,ADO目前的最新版本为ADO.NET。这是微软公司成功的组件数据存取技术的最新版本,让开发人员可以同市场上几乎任何一种数据库进行交互。,34,使用 ADONET定义数据库访问,使用 ADONET时,数据库访问是由名称空间 System.Data、和 定义的。要使用ADO.NET 来访问数据库,需要将这些名称空间导入到应用程序中。后面将逐个对这些名称空间进行更详细的讨论。现在,您要了解以下几点:System

24、.Data是通用的名称空间,其中包含组成ADONET核心体系结构的所有类。名称空间供ADO.NET 管理提供程序访问支持OleDb的数据源时使用。名称空间供 SQL Server管理提供程序使用。该名称空间是专为 Microsoft SQL Server 而设计的,对于以前版本的 SQL Server,可以提高其性能。,35,8.5.2.2.NET Framework数据提供程序的4个核心对象,.NET Framewor数据提供程序包含了 Connection,Command,DataReader DataAdapter 这4个核心对象,这些对象之间的关系如图8.14所示。,36,37,ADO

25、.NET 架构,ADO.NET 对象可以让我们快速简单的来存取各种数据。传统的主从式应用程序在执行时,都会保持和数据源的联接。但是在某些状况下和数据库一直保持联接是不需要的,而且一直保持和数据源的联接会浪费系统资源。有些时候我们只需要很单纯的将数据取回,这时候就不需要保持对数据源的联接。ADO.NET 被设计成对于数据处理不一直保持联接的架构,应用程序只有在需要取得数据或是更新数据的时候才对数据源进行联接的工作,所以应用程序所要管理的联接减少;数据源就不用一直和应用程序保持联接,负载减轻了效能自然也就提升。不过我们的应用程序也有些情况需要和数据源一直保持联接;此时我们还是可以使用ADO 对象和

26、数据源随时保持联接的状态。,38,39,这4个核心对象的功能如下:,1)Connection:建立与特定数据源的连接2)Command:对数据源执行数据库命令,用于返回数据、修改数据、运行存储过程以及发送或检索参数信息等。3)DataReader:从数据源中读取只进且只读的数据流。4)DataAdapter:执行SQL命令并用数据源填充DataSet。DataAdapter提供连接DataSet对象和数据源的桥梁。DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使对DataSet中数据的更改与数据源保持一致。,40,8.5.2.3 AD

27、O.NET名称空间,.NET框架的命名空间(NameSpace)它包含了应用程序将会使用的动态链接库。ADO.NET命名空间提供了多个数据库访问操作的类,图8.15列出了SQL Server.NET Framework数据提供程序和OLE DB.NET Framework数据提供程序的类结构。命名空间 System.Data 提供了ADO.NET的基本类;提供了为OLE DB数据源或SQL Server 6.5及更老版本数据库设计的数据存取类;提供了为SQL Server 7.0及更新版本数据库设计的数据存取类;,41,42,在ASP.NET应用程序中访问数据库,在ASP.NET应用程序中访问

28、数据库,需要在程序开始处引入相应的命名空间。例如在程序中访问SQL Server 2000,需要使用以下语句:如果使用 Visual Basic.NET编写代码,需要使用以下语句:Imports System.Data Imports System.Data.SqlClient如果使用 Visual C#.NET 编写代码,则需要使用以下语句:using System.Data;using System.Data.SqlClient;,43,从图8.15中可以看出,不同的数据提供程序的命名空间下提供了不同的访问数据库的类。例如SQL Server数据库常用的类位于命名空间下,用于SQL Ser

29、ver 7.0或更高版本的数据库操作。表8.7列出了SQL数据库常用的类。,44,表8.7 SQL数据库常用的类,45,其他数据提供程序的类与此相似。另外,ADO.NET还提供了数据集及相关类。这些类构成了DataSet对象模型。这些类可以构建内存数据库。一个 DataSet 就是一个内存数据库。创建一个DataSet后,就可以将代表数据表的多个DataTable对象添加到DataSet中。而DataTable可以通过SqlDataAdapter或OleDbDataAdapter对象来创建。通过DataRelation对象可以定义DataSet中表与表之间的关系,而通过DataView则可以实

30、现DataTable的数据过滤和排序。,46,8.5.2.4 VS.NET数据控件,作为一个功能强大的IDE(集成开发环境),Visual Studio.NET提供了使用方便的快速开发工具,其中包括VS.NET数据控件。VS.NET的数据访问控件位于“工具箱”的“数据”工具箱中,如图8.16所示。,47,图8.16 VS.NET的数据访问控件,48,从图8.16可以看出数据库访问控件和ADO.NET命名空间中的相应类存在着对应关系,OleDbConnection、OleDbCommand、OleDbDataAdapter属于OLE DB类控件,SqlConnection、SqlCommand、

31、SqlDataAdapter属于Sql类控件。在VS.NET中DataReader类没有对应的可视化控件,因此若程序中使用DataReader类访问数据库,必须编写相应的代码。,49,8.5.2.5 ADO.NET数据访问策略,ADO.NET的数据访问策略有两种 一是将数据记录缓存于数据集(Dataset)中。二是直接访问数据库并使用数据读取器(DataReader)来读取数据记录。那么,应用程序应使用Dataset还是DataReader呢?此时应考虑应用程序所需要的功能。见示例项目:countpeople,50,Dataset功能强大,用于执行以下功能:1)对数据执行大量的处理,而不需要与

32、数据源保持打开的连接,从而可以将该连接释放给其他客户端使用。2)在应用程序本地缓存数据。3)与数据进行动态交互,例如绑定到Windows窗体控件或组合并关联来自多个源的数据。4)提供关系数据的分层XML视图,并使用XSL转换或XML路径语言(XPath)查询等工具来处理数据。5)在层间或从XML Web services对数据进行远程处理。,51,DataReader功能有限,只能以只读方式返回数据,但是这种方式节省了DataSet所使用的内存,并将省去创建DataSet并填充其内容所需的必要处理,因此提高了应用程序的性能。,52,8.6 ASP.NET数据库应用程序开发8.6.1 ADO.N

33、ET数据库操作的基本步骤,可以使用ADO.NET的类来执行数据库操作,包括查询、添加、更新和删除数据等。ADO.NET访问数据库的一般步骤是:1)导入相应的命名空间。2)建立与数据库的连接。可以使用SqlConnection或OleDbConnection对象等。3)执行SQL的命令,以实现对数据库的查询、插入、更新和删除等操作。这里要使用Command对象或DataAdapter对象执行SQL的Select,Insert,Update或Delete等命令。,53,4)或将从数据库取回的记录集合填入DataSet中。5)关闭到数据库的连接。6)在DataSet上作所需要的操作。7)如果有必要,

34、将对数据库中的数据的修改结果写回数据库。在ASP.NET数据库应用程序中操作数据库的方法可以有两种:一是通过直接编写程序代码进行数据库连接和数据库操作;二是使用VS.NET提供的数据控件,用可视化的方法帮助实现对数据库的操作。,54,【本章小结】,本章在简要介绍数据库的基本知识的基础上,重点讲述了常用的数据库管理系统Microsoft SQL Server 2000的使用要点和在ASP.NET中使用数据库的基本技术ADO.NET框架和方法。通过本章的学习,应重点掌握数据库的基本概念,初步掌握根据实际应用系统设计数据库和表,熟练掌握在SQL Server 2000中创建及操作数据库和表的方法,建立清晰的ADO.NET数据模型的概念,并初步掌握应用ADO.NET进行数据库访问的技术。更详细的内容见第9章,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号