《ASP NET程序设计及实践》课件07-第7章 ADO.NET数据库访问_第1页
《ASP NET程序设计及实践》课件07-第7章 ADO.NET数据库访问_第2页
《ASP NET程序设计及实践》课件07-第7章 ADO.NET数据库访问_第3页
《ASP NET程序设计及实践》课件07-第7章 ADO.NET数据库访问_第4页
《ASP NET程序设计及实践》课件07-第7章 ADO.NET数据库访问_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

-1-理解ADO.NET的结构原理掌握ADO.NET访问数据库的常用对象掌握使用Connection对象连接SQLServer2008数据库掌握使用Command对象访问数据库掌握使用DataAdapter和DataSet操作数据库目标-2-ADO.NET简介-1ADO.NET技术,是一种可以快速、高效地利用VisualStudio2010开发出基于.NET平台的数据库应用程序的技术。实际上,ADO.NET就是由.NETFramework提供的与数据库操作相关的类库。ADO.NET可以被看作是一个介于数据源和数据使用者之间的转换器。ADO.NET接受程序中的命令,如连接数据库、返回数据集等,然后将这些命令转换成在数据源中可以正确执行的语句(如关系数据库的SQL)。-3-ADO.NET简介-2ADO.NET的几个特征:非连接数据体系:ADO.NET可以在两种模式下工作,一种是连接模式,另一种是非连接模式。在数据集中缓存数据:数据集是数据库记录的一个缓冲集合,数据集独立于数据源,可以保持同数据源的无连接状态。用XML进行数据传送:通过使用XML将数据从数据库中传送到数据集中,再从数据集传送到另外一个对象中。使用XML可以在不同类型应用之间交换信息。通过数据命令和数据库相互作用:数据命令可以是SQL声明或一个存储过程,通过执行命令,可以从数据库中检索、插入或修改数据。

-4-ADO.NET结构-1ADO.NET包括两个核心组件:NETFramework数据提供程序和DataSet,用于实现数据操作与数据访问的分离。-5-ADO.NET结构-2.NETFramework数据提供程序NETFramework数据提供程序是ADO.NET一个核心组件,用于实现数据操作和对数据的快速、只进、只读访问。.NETFramework数据提供程序由Connection、Command、DataReader和DataAdapter等四个核心对象组成,主要用于连接到数据库、执行命令和检索结果,开发人员可以直接处理检索到的结果,或将其放入DataSet对象,以便与来自多个数据源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。-6-ADO.NET结构-3.NETFramework数据提供程序的核心对象的作用对象名称对象功能Connection提供与数据源的连接,是数据访问者和数据源之间的对话通道Command能够使用访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令DataReader从数据源中获得高性能的数据流,允许应用程序在数据记录间进行只读的、只进的数据访问,从而提高应用程序的性能DataAdapter充当DataSet对象和数据源之间的桥梁,DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,DataAdapter对DataSet对象隐藏了实际数据操作的细节,并使DataSet中数据的更改与数据源保持一致,从而保证DataSet的数据源无关性。-7-ADO.NET结构-4DataSet组件DataSet是ADO.NET的断开连接式结构的核心组件,其设计目的是为了实现独立于任何数据源的数据访问。DataSet与数据源是断线连接的,可以将其看成是从数据库中所检索出的数据在内存中的缓存。DataSet是DataTable对象的集合,由数据行、数据列、主键、外键、约束等信息组成。因此DataTable可以看成是对应于数据库中表的概念。-8-ADO.NET结构-5DataSet数据访问原理应用程序即可以通过数据集,也可以通过DataReader来访问数据库,其数据访问原理如下图所示。-9-ADO.NET结构-6ADO.NET中的命名空间命名空间(NameSpace)记录了对象的名称与所在的路径。使用ADO.NET中的对象时,必须首先声明命名空间,这样编译器才知道到哪里去加载这些对象。ADO.NET的命名空间分类如下所示:System.Data命名空间:该命名空间是ADO.NET的核心,包含大部分的基础对象,如DataSet、DataTable、DataRow等,因此在编写ADO.NET程序时,必须引用此命名空间。System.Data.Common命名空间:该命名空间的核心内容是各种.NETFramework数据提供程序共享的类。System.Data.OleDb命名空间:该命名空间包含了使用数据提供程序在应用程序和数据库之间发送和接受数据的组件,当连接SQLServer6.5以下版本或其他数据库时,必须首先引用此命名空间。System.Data.SqlClient命名空间:该命名空间中的内容是专为SQLServer数据库设计的数据提供程序。虽然System.Data.OleDb中的类也可以用于SQLServer数据库,但相比较而言,SqlClient中的类具有更好的性能。System.Data.OracleClient命名空间:该命名空间的核心内容是专为Oracle数据库设计的数据提供程序。-10-ADO.NET结构-7ADO.NET中命名空间的结构图-11-ADO.NET的核心对象ADO.NET提供了一些核心对象来,这些核心对象能够自行封装数据库操作类并简化开发过程。ADO.NET主要包括以下五个核心对象:Connection

:连接对象Command

:命令对象DataReader

:数据读取器DataAdapter

:数据适配器DataSet

:数据集-12-Connection对象-1Connection对象要使用ADO.NET检索和操作数据库,必须首先创建应用程序和数据库之间的连接。ADO.NET提供了以下几个专门用于连接不同数据库的连接类:OleDbConnection类:主要用于连接Access、SQLServer6.5以下版本的数据库。OdbcConnection类:用于连接ODBC数据源。SqlConnection类:用于连接SQLServer数据库。OracleConnecton类:用于连接Oracle数据库。

-13-Connection对象-2ADO.NET连接数据库的步骤:1.添加对System.Data.SqlClient的引用后台代码中需要对命名空间System.Data.SqlClient进行引用,代码如下所示。usingSystem.Data.SqlClient;

2.创建SqlConnection对象在程序代码中创建SqlConnection对象,并赋值连接字符串,代码如下所示。SqlConnectioncon=newSqlConnection();//创建连接对象//设置连接字串con.ConnectionString="server=.;database=mydb;uid=sa;pwd=mypassword";表示SqlServer服务器的IP表示数据库名表示数据库名用户名和密码-14-Connection对象-33.打开数据库连接配置完连接字符串后,就可以调用SqlConnection对象的Open()方法来打开数据库连接。代码如下所示。con.Open();

在应用程序几乎所有的页面或模块中都需要连接数据库,因此也就都需要使用连接字符串,所以通常会将连接字符串写到配置文件中,使用时通过.NET提供的配置管理类来读取,在需要修改的话只需要修改该配置文件一处即可,从而简化了开发的繁琐程度。打开Web网站的配置文件web.config,查找<connectionStrings>标签,在其中添加如下内容。<connectionStrings> <addname="conn" connectionString="server=.;database=mydb;uid=sa;pwd=mypassword"/></connectionStrings>-15-Connection对象-43.关闭数据库连接当对数据进行完操作后,在代码结束时需要关闭数据库连接,通过Close()方法即可将其关闭,代码如下所示。con.Close();-16-Connection对象-5示例:使用ADO.NET连接SQLServer2005数据库。创建页面SqlConnectionDemo.aspx,包含一个ID为“Label1”的Label控件。publicpartialclassSqlConnectionDemo:System.Web.UI.Page{ publicstaticreadonlystringCONN_STR= ConfigurationManager. ConnectionStrings["conn"].ConnectionString; protectedvoidPage_Load(objectsender,EventArgse) { try { SqlConnectionconn=newSqlConnection(CONN_STR); conn.Open();//打开连接

Label1.Text="连接成功"; conn.Close();//关闭连接

} catch { Label1.Text="连接失败"; } }}-17-Command对象-1Command对象可以使用数据命令直接与数据源进行通信。Command类是一个执行SQL语句和存储过程的类,通过它,可以实现对数据的添加、删除、更新、查询等操作。Command常用的属性如下:属性功能说明Connection用于设置命令对象所使用的连接CommandText被执行的命令内容CommandType指名CommandText属性的类型,可以是Sql语句、存储过程或表Parameters命令对象的参数集合CommandType具有3种不同的类型:类型功能说明CommandType.TextCommandType的默认值。它指示执行的是SQL语句,为CommandText指定SQL字符串CommandType.StoredProcedure指示执行的是存储过程,需要为CommandText指定一个存储过程的名称CommandType.TableDirect指示执行的是得到某个数据表中的所有数据,此时需要为CommandText指定一个数据表名称-18-Command对象-2Command对象提供了三种用于执行SQL语句的方法:ExecuteReader():用于执行SELECT命令,并返回一个DataReader对象,使用DataReader可以以只读方式访问查询结果。ExecuteNonQuery():用于执行非SELECT的命令,如INSERT、DELETE或者UPDATE命令,返回一个命令所影响的数据的行数。也可以用ExecuteNonQuery()方法来执行一些数据定义命令,如新建、更新、删除数据库对象(如表、索引等)。ExecuteScalar():用于执行SELECT查询命令,返回数据中第一行第一列的值。这个方法通常用来执行那些用到COUNT()或者SUM()函数的SELECT命令。-19-Command对象-3示例:演示ExecuteNonQuery()的使用方法。publicpartialclassExecuteNonQueryDemo:System.Web.UI.Page{ publicstaticreadonlystringCONN_STR =ConfigurationManager.ConnectionStrings["conn"] .ConnectionString; protectedvoidPage_Load(objectsender,EventArgse) { using(SqlConnectionconn=newSqlConnection(CONN_STR)) { Stringsql="UPDATEusersSETusername='姓名'"; conn.Open(); SqlCommandcommand=newSqlCommand(sql,conn); Response.Write("操作影响了"+command.ExecuteNonQuery() +"条记录"); } }}-20-Command对象-4示例:演示ExecuteScalar()的使用方法。publicpartialclassExecuteScalarDemo:System.Web.UI.Page{ publicstaticreadonlystringCONN_STR =ConfigurationManager.ConnectionStrings["conn"].ConnectionString; protectedvoidPage_Load(objectsender,EventArgse) { using(SqlConnectionconn=newSqlConnection(CONN_STR)) { Stringsql="SELECTCOUNT(*)FROMusers"; conn.Open(); SqlCommandcommand=newSqlCommand(sql,conn); Label1.Text="users表中有"+command.ExecuteScalar()+"条记录"; } }}-21-DataReader对象-1DataReader类被设计为产生只读,只进的数据流。与DataSet相比,使用DataReader访问数据库的速度要快一些,并且能够使用较少的服务器资源。DataReader具有如下特点:快速的数据库访问只进和只读减少服务器资源自定义数据库管理手动连接管理

-22-DataReader对象-2DataReader对象的常用方法方法返回值功能说明Close()void关闭数据读取器。已重载NextResult()boolean当读取批量的SQL语句的结果时,前进到下一个结果集,如果有更多的结果集,将返回True。有重载Read()boolean前进到下一条记录。如果有记录,将返回True-23-DataReader对象-3示例:演示使用Command和DataReader访问数据库,实现登录功能。publicpartialclassLogin:System.Web.UI.Page{ publicstaticreadonlystringConStrUrl= ConfigurationManager.ConnectionStrings["conn"].ConnectionString; protectedvoidbtnLogin_Click(objectsender,EventArgse) { SqlConnectionconn=newSqlConnection(ConStrUrl);//创建连接对象

try { conn.Open();//尝试打开连接

stringusername=tbUserName.Text.Trim(); stringpassword=tbPassword.Text.Trim(); stringsql="select*from[users]whereusername='"+username+"'"; SqlCommandcmd=newSqlCommand(sql,conn);//创建Command对象

SqlDataReaderdr=cmd.ExecuteReader();//创建DataReader对象

if(dr.HasRows) { … } catch { Response.Write("登录失败:数据库连接失败!<hr/>"); } }}-24-DataAdapter对象DataAdapter是DataSet和数据源之间的一个适配器。在创建数据库连接后,可以使用DataAdapter对象对数据集DataSet进行填充。DataSet对象中缓存了检索结果,从而降低了应用程序和数据库之间的通信次数DataAdapter常用的属性和方法如下:属性或方法功能说明SelectCommand属性查询数据的命令InsertCommand属性插入数据的命令UpdateCommand属性更新数据的命令DeleteCommand属性删除数据的命令Fill()方法用于填充或刷新DataSetUpdate()方法将DataSet中的数据更新到数据库里-25-DataSet对象DataSet是一个数据容器,将数据库中的数据拷贝一份放到了用户本地的内存中,供用户在不连接数据库的情况下读取数据,不仅充分利用了客户端资源,也大大降低了数据库服务器的压力。DataSet能够支持多表、表间关系、数据库约束等,与关系数据库的模型基本一致,从而能模拟出一个简单的数据库模型。-26-DataTable-1DataTable是DataSet中的常用的对象,是数据库中表概念的映射。DataTable属性如下表所示。属性功能说明CaseSensitive此属性设置表中的字符串是否区分大小写,若无特殊情况,一般设置为false,该属性对于查找,排序,过滤等操作有很大的影响Columns获取属于该表的列的集合MinimumCapacity设置创建数据表的最小记录空间Rows获取属于改表的行的集合TableName指定数据表的名称-27-DataTable-2示例:通过编程的方式创建一个DataTable表。DataTabletable=newDataTable("mytable");//创建一个DataTable对象table.CaseSensitive=false;//设置不区分大小写table.MinimumCapacity=100;//设置DataTable初始大小table.TableName="newtable";//设置DataTable的名称DataTable必须包含列。因此创建一个DataTable后,必须向其增加列。开发人员可以使用Columns集合的Add()方法向DataTable中增加列,代码如下所示。DataColumncolum=newDataColumn();//创建一个DataColumncolum.ColumName="id";//设置列名colum.DataType=typeof(int);//设置列的数据类型table.Columns.Add(colum);//增加一列colum=newDataColumn();//再创建一个DataColumncolum.ColumName="title";colum.DataType=typeof(string);table.Columns.Add(colum);注意:DataTable中列的数据类型使用的只能是.NET中的数据类型-28-DataRowDataRow表示是表中的数据行。可以使用DataRow对象向表中添加新的数据行,这一操作同数据库中的INSERT语句的概念类似。插入一个新行,首先要声明一个DataRow类型的变量。例如:DataRowrow=table.NewRow(); //使用DataTable的NewRow方法创建一个新DataRow对象

通过使用索引或者列名来操作行中的字段。例如:row[0]=1; //使用索引赋值列row[1]="datarow"; //使用索引赋值列

-29-DataAdapter和DateSet示例:演示使用DataAdapter和DateSet访问数据。… con.Open(); //打开连接

SqlDataAdapterdaDept=newSq

温馨提示

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

评论

0/150

提交评论