《ASP.NET程序设计实用技术教学课件王凤岭第5章节》由会员分享,可在线阅读,更多相关《ASP.NET程序设计实用技术教学课件王凤岭第5章节(24页珍藏版)》请在金锄头文库上搜索。
1、第5章 ADO.NET概述,5.1 ADO.NET简介,什么是ADO? Microsoft ActiveX Data Object即ActiveX数据对象。 通过ADO,应用程序能够通过任一OLE DB提供者存取及处理数据库服务器的数据。使用ADO能够方便地构建C/S或Web接口的数据库程序。,什么是ADO.NET ADO.NET是ADO的后续版本。 ADO.NET与ADO相比,有如下变化: 支持XML 提供结构化数据访问能力 数据模型得到改进,ADO.NET的主要特性 互操作性 利用XML实现组件与层之间的数据传输,使任何有能力阅读XML的组件都可以处理数据。 可维护性 利于分层设计程序,使
2、程序更易于维护 可编程性 ADO.NET的数据模型完全类型化,在程序设计中,开发人员可以像使用类一样声明、定义、使用数据对象。例如: If TotalQty DataSet1.ProductInfo(“BabyFood”).QtyAvaliable,性能 较ADO得到了提高 可伸缩性 允许更多用户访问数据库,5.2 ADO.NET与ADO的比较,5.2.1 Windows平台上数据访问的历史 DAO - Data Access Objects 主要用于访问本地数据库 RDO - Remote Data Objects 允许访问远程及本地数据库 ADO 支持本地和远程访问数据库,支持更多的数据库
3、(SQL Server, Oracle等)。 ADO.NET ADO的后续版本,功能和性能得到前所未有的改善。,内存中数据的表现形式 ADO使用Recordset,类似一个单独的表 ADO.NET使用DataSet对象,包括一个或多个表 处理多表之间的关系 ADO只能通过SQL的JOIN查询来连接多表构成一张独立的表格 ADO.NET提供DataRelation对象合并来自多个DataTable对象的数据。,数据导航 ADO只能顺序扫描各行 ADO.NET允许非顺序访问数据表 断开连接的访问 通过DataSet,ADO.NET支持断开连接的访问。 可编程性 ADO.NET的数据模型完全类型化。
4、,在层与组件之间共享 ADO使用COM组件传输数据,在各层之间需要进行数据类型转换,这需要消耗系统资源。 ADO.NET使用XML传输数据,因此在各层之间进行数据传输无需进行数据类型转换。 通过防火墙传输数据 ADO由于使用COM组件传输数据,而COM组件可能会受到防火墙阻隔 ADO.NET采用XML传输数据,因此不存在此问题,可伸缩性 ADO需要长时间锁定数据库和保持数据连接,占用有限的数据库系统连接 ADO.NET允许在断开连接的状态下访问数据库,而不用长时间保持数据库连接,5.3 .NET 框架数据提供程序,第六章,第七章,第八章,第八章,第九章,访问方式2,访问方式1,5.3.1 SQ
5、L Server.NET数据提供程序包含的类 SqlConnection 建立程序与SQL Server系统之间的连接 SqlCommand 向SQL Server传输SQL命令,同时可返回SQL命令执行结果 SqlDataReader 提供只读、只向前的数据浏览 SqlDataAdapter 用于将SQL Server返回的数据填充到DataSet,5.3.2 OLEDB.NET数据提供程序 SQLOLEDB 用于访问SQL Server 6.5 MSDAORA 用于访问ORACLE JOLT 用于访问Access等支持Jet数据引擎的数据库,所包含的类: OleDbConnection O
6、leDbCommand OleDbDataReader OleDbDataAdapter,5.4 ADO.NET组件及对象模型,5.4.1 DataSet对象简介,DataSet是ADO.NET的核心,是数据在内存中的副本。与ADO Recordset不同的是,它可以有多个表,每个表可以来自不同的数据存储。可以通过关系将DataSet中的表彼此相连。简而言之,DataSet是一个在内存中的数据库,而且工作在断开连接的模式,不需要和填充它的数据库相连。,5.4.2 .NET框架数据提供程序的核心对象,Connection对象 连接数据源 Dim strConnection As String s
7、trConnection = “Server=(local);Database=StudentMS;User Id=sa;Password=sql;“ Dim cnSqlServer As New SqlConnection(strConnection) cnSqlServer.Open() 打开连接 使用该连接检索数据 cnSqlServer.Close() 关闭连接,Command 向数据库传输SQL指令并取得返回结果,DataReader对象简介 提供只读、只向前的数据浏览功能 通DataReader一次只能获取一条记录,这可以有效地减少内存资源的占用 在DataReader打开时必须保
8、持数据库连接处于活动状态,例程5.3 Dim strConnection As String strConnection = “Server=(local);Database=StudentMS;User Id=sa;Password=sql;“ Dim cnSqlServer As New SqlConnection(strConnection) Dim strSQL As String = “SELECT * FROM tblStudents“ Dim cmd As New SqlCommand(strSQL, cnSqlServer) 定义Command Dim drReader As
9、SqlDataReader 定义DataReader cnSqlServer.Open() 打开连接 drReader = cmd.ExecuteReader 执行命令,返回DataReader Do While drReader.Read 处理查询结果 Response.WriteLine(drReader(“Name“) Loop drReader.Close() cnSqlServer.Close() 关闭连接,DataAdapter对象简介 DataAdapter是DataSet与数据库之间的桥梁,用它从数据库获得数据,并可以填充到DataSet。 (例程5.4),例程5.4 Dim
10、strConnection As String strConnection = “Server=(local);Database=StudentMS;User Id=sa;Password=sql;“ Dim cnSqlServer As New SqlConnection(strConnection) Dim strSQL As String = “SELECT * FROM tblStudents“ Dim dtAdapter As New SqlDataAdapter(strSQL, cnSqlServer) 定义DataAdapter Dim dsResult As New DataSet() 定义DataSet cnSqlServer.Open() 打开连接 dtAdapter.Fill(dsResult) 用DataAdapter填充DataSet cnSqlServer.Close() 关闭连接,思考与练习,1ADO.NET对于.NET的意义如何? 2ADO.NET中有哪些对象? 3ADO.NET是如何促进数据共享的? 4ADO.NET有哪两个标准的数据提供程序,各包含哪些常用对象? 5与Recordset相比,Dataset有哪些优点?,