浅析ADO.NET数据库编程

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:fdiskhotmail
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:ADO.NET提供对Microsoft SQL Server 等数据源以及通过OLE DB和XML公开的数据源的一致访问,数据共享使用者应用程序可以使用 ADO.NET来连接到这些数据源,并检索、操作和更新数据。
  关键词:ADO.NET;DataSet;XML;NET Framework;数据提供程序
  中图分类号:TP311 文献标识码:A文章编号:1009-3044(2008)24-1130-03
  ADO.NET Database Programming Analysis
  WANG Hui, BO Tao
  (Tianjin Medical School, Tianjing 300222, China)
  Abstract: ADO.NET provide data source to Microsoft SQL Server and OLE DB as well as XML for the consistent access. user of date sharing can use the program of ADO.NET connecting data source and retrieval, operation and updating of the date.
  Key words: ADO.NET; DataSet; XML; NET Framework; provider
  
  1 引言
  
  随着应用程序开发的发展演变,新的应用程序已基于 Web 应用程序模型越来越松散地耦合。如今,越来越多的应用程序使用 XML 来编码要通过网络连接传递的数据。Web应用程序将 HTTP用作在层间进行通信的结构,因此它们必须显式处理请求之间的状态维护。在此编程风格中,连接会在程序的整个生存期中保持打开,而不需要对状态进行特殊处理。
  设计ADO.NET的目的是为了满足这一新编程模型的以下要求:具有断开式数据结构;能够与XML紧密集成;具有能够组合来自多个、不同数据源的数据的通用数据表示形式;以及具有为与数据库交互而优化的功能,这些要求都是.NET Framework固有的内容。
  
  2 在创建ADO.NET时,Microsoft具有以下设计目标。
  
  2.1 利用当前的ADO知识
  ADO.NET 的设计满足了当今应用程序开发模型的多种要求。同时,该编程模型尽可能地与 ADO 保持一致,这使当今的ADO开发人员不必从头开始学习全新的数据访问技术。ADO.NET是.NET Framework 固有部分,因此对于 ADO 程序员决不是完全陌生的。
  2.2 支持N层编程模式
  ADO.NET为断开式n层编程环境提供了一流的支持,许多新的应用程序都是为该环境编写的。使用断开式数据集这一概念已成为编程模型中的焦点。n层编程的ADO.NET 解决方案就是DataSet。
  2.3 集成XML支持
  XML和数据访问是紧密联系在一起的,即XML的全部内容都是有关数据编码的,而数据访问越来越多的内容都与XML有关。.NET Framework 不仅支持Web标准,它还是完全基于Web标准生成的。
  
  3 ADO.NET概述
  
  ADO.NET有效地从数据操作中将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET包含用于连接到数据库、执行命令和检索结果的.NET Framework数据提供程序。您可以直接处理检索到的结果,或将其放入ADO.NET DataSet 对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。ADO.NET DataSet对象也可以独立于.NET Framework 数据提供程序使用,以管理应用程序本地的数据或源自XML的数据。
  3.1 ADO.NET结构
  3.1.1 XML和ADO.NET
  ADO.NET借用XML的力量来提供对数据的断开式访问。ADO.NET的设计与.NET Framework中XML类的设计是并进的,它们都是同一个结构的组件。
  ADO.NET和.NET Framework中的XML类集中于DataSet对象。无论DataSet是文件还是XML流,它都可以使用来自 XML 源的数据来进行填充。
  3.1.2 ADO.NET组件
  设计 ADO.NET组件的目的是为了从数据操作中分解出数据访问。ADO.NET的两个核心组件会完成此任务:DataSet和.NET Framework数据提供程序,后者是一组包括 Connection、Command、DataReader 和 DataAdapter 对象在内的组件。
  ADO.NET DataSet是 ADO.NET 的断开式结构的核心组件。DataSet 的设计目的很明确:为了实现独立于任何数据源的数据访问。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。
  ADO.NET 结构的另一个核心元素是 NET Framework数据提供程序 ,其组件的设计目的相当明确:为了实现数据操作和对数据的快速、只进、只读访问。Connection 对象提供与数据源的连接。Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader 从数据源中提供高性能的数据流。最后,DataAdapter 提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。
  下图阐释了 ADO.NET 结构的组件:
  
  
  4 使用ADO.NET
  
  4.1 使用 ADO.NET连接到SQL Server
  Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI; Initial Catalog=northwind")
  nwindConn.Open()
  4.2 执行命令
  当建立与数据源的连接后,可以使用 Command 对象来执行命令并从数据源中返回结果。您可以使用 Command 构造函数来创建命令,该构造函数采用在数据源、Connection 对象和 Transaction 对象中执行的 SQL 语句的可选参数。也可以使用 Connection 的 CreateCommand 方法来创建用于特定 Connection 对象的命令。您可以使用 CommandText 属性来查询和修改 Command 对象的 SQL 语句。
  Command 对象公开了几个可用于执行所需操作的 Execute 方法。当以数据流的形式返回结果时,使用 ExecuteReader 可返回 DataReader 对象。使用 ExecuteScalar 可返回单个值。使用 ExecuteNonQuery 可执行不返回行的命令。
  以下代码示例演示如何设置 Command 对象的格式,以便从 Northwind 数据库中返回 Categories 的列表。
  Dim catCMD As SqlCommand = New SqlCommand("SELECT CategoryID, CategoryName FROM Categories", nwindConn)[1]
  4.3 使用 DataReader 检索数据
  可以使用 ADO.NET DataReader 从数据库中检索只读、只进的数据流。查询结果在查询执行时返回,在并存储在客户端的网络缓冲区中,直到您使用 DataReader 的 Read 方法对它们发出请求。使用 DataReader 可以提高应用程序的性能,因为一旦数据可用,DataReader 方法就立即检索该数据,而不是等待返回查询的全部结果;并且在默认情况下,该方法一次只在内存中存储一行,从而降低了系统开销。
  当创建 Command 对象的实例后,可调用 Command.ExecuteReader 从数据源中检索行,从而创建一个 DataReader,如以下示例所示。
  Dim myReader As SqlDataReader = myCommand.ExecuteReader()
  4.4 从 SQL Server 中以 XML 形式获取数据
  Microsoft SQL Server 2000 引入了在检索数据时对 XML 功能的支持。为了使您能够直接从 Microsoft SQL Server 2000 中返回 XML 流,SQL Server .NET Framework 数据提供程序的 SqlCommand 对象具有 ExecuteXmlReader 方法。ExecuteXmlReader 返回已填充了为 SqlCommand 指定的 SQL 语句的结果的 System.Xml.XmlReader 对象。
  Dim custCMD As SqlCommand = New SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn)
  Dim myXR As System.Xml.XmlReader = custCMD.ExecuteXmlReader()[2]
  4.5 从 DataAdapter 填充 DataSet
  ADO.NET DataSet 是数据的内存驻留表示形式,它提供了独立于数据源的一致关系编程模型。DataSet 表示整个数据集,其中包含表、约束和表之间的关系。由于 DataSet 独立于数据源,DataSet 可以包含应用程序本地的数据,也可以包含来自多个数据源的数据。与现有数据源的交互通过 DataAdapter 来控制。
  .NET Framework 所包含的每个NET Framework 数据提供程序都具有一个DataAdapter对象,DataAdapter对象用于从数据源中检索数据并填充DataSet中的表,DataAdapter还会将对DataSet作出的更改解析回数据源。DataAdapter使用 .NET Framework 数据提供程序的Connection对象连接到数据源,使用Command对象从数据源中检索数据并将更改解析回数据源。
  DataAdapter的SelectCommand属性是一个Command对象,它从数据源中检索数据。DataAdapter 的 InsertCommand、UpdateCommand和DeleteCommand 属性也是 Command 对象,它们按照对DataSet 中数据的修改来管理对数据源中数据的更新。DataAdapter 的 Fill 方法用于使用 DataAdapter 的 SelectCommand 的结果来填充 DataSet。Fill 将要填充的 DataSet 和 DataTable 对象(或要使用从 SelectCommand 中返回的行来填充的 DataTable 的名称)用作它的参数。
  Fill 方法使用 DataReader 对象来隐式地返回用于在 DataSet 中创建表的列名称和类型以及用来填充 DataSet 中的表行的数据。表和列仅在不存在时才创建;否则,Fill 将使用现有的 DataSet 架构。
  4.6 使用 DataAdapter 和 DataSet 更新数据库
  DataAdapter 的 Update 方法可调用来将 DataSet 中的更改解析回数据源。与 Fill 方法类似,Update 方法将 DataSet 的实例和可选的 DataTable 对象或 DataTable 名称用作参数。DataSet 实例是包含已作出的更改的 DataSet,而 DataTable 标识从其中检索更改的表。
  当调用 Update 方法时,DataAdapter 将分析已作出的更改并执行相应的命令(INSERT、UPDATE 或 DELETE)。当 DataAdapter 遇到对 DataRow 的更改时,它将使用 InsertCommand、UpdateCommand 或 DeleteCommand 来处理该更改。这样,您就可以通过在设计时指定命令语法并在可能时通过使用存储过程来尽量提高 ADO.NET 应用程序的性能。在调用 Update 之前,必须显式设置这些命令。如果调用了 Update 但不存在用于特定更新的相应命令(例如,不存在用于已删除行的 DeleteCommand),则将引发异常。
  Command 参数可用于为 DataSet 中每个已修改行的 SQL 语句或存储过程指定输入和输出值。
  
  5 ADO.NET 示例程序
  
  以下示例连接到 Microsoft SQL Server 2000 上的 Northwind 数据库,并使用 DataReader返回一个类别列表。
  Imports System
  Imports System.Data
  Imports System.Data.SqlClient
  Imports Microsoft.VisualBasic
  Public Class Sample
  Public Shared Sub Main()
  Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost; Integrated Security=SSPI;Initial Catalog=northwind")
  Dim catCMD As SqlCommand = nwindConn.CreateCommand()
  catCMD.CommandText = "SELECT CategoryID, CategoryName FROM Categories"
  nwindConn.Open()
  Dim myReader As SqlDataReader = catCMD.ExecuteReader()
  Do While myReader.Read()
  Console.WriteLine(vbTab
其他文献
语文教育家叶圣陶先生指出:“读整本的书,不仅可以练习精读、速读,有利于养成好的读书习惯,还可以进行各种文学知识与文体阅读的训练,学生阅读的心理会更加专一,阅读效果也会更好,它可以收‘一石多鸟’之效。”《义务教育语文课程标准(2011年版)》也强调要重视培养学生广泛的阅读兴趣,扩大阅读面,增加阅读量,提高阅读品位;提倡少做题,多读书,好读书,读好书,读整本的书。整本书承载着丰富的文化信息,学生在阅读
摘要:为了解决高温监测系统在原DOS系统中不能实现多线程所造成的监测系统容量小、系统运行不稳定、CPU运行效率低、应用及修改程序不灵活等问题。基于高温监测系统V1.0的需求,从完善高温监测系统功能的角度出发,分析现今Linux的发展必然是嵌入式系统这一趋势。采用功能完善且一开始就针对实时系统,在设计之初就考虑了小巧、高性能和高效率的MiniGUI图形用户界面,提出在Linux上运用MiniGUI实
整体上看,张国平的山水画所表现的景观客体是属于南方的,其传递的信息主要是南方山水“秀”和“润”的绿色生态本质特征,而非北方山水的苍凉、苍莽。  在四川的画坛上,能油画、国画左右开弓者为数不多,但张国平是其中之一,而且得心应手,颇有建树和影响。  张国平从事油画学习、创作达半个世纪,探索之深、发力之勤、用心之苦、创作之丰,这些使其艺术简历赫奕,如中国美术家协会理事,四川省美术家协会副主席,成都文理学
作者简介  作词: 熊平  成都市政府研究室副主任,西南财大经济学博士,电子科技大学管理学博士后,副教授。爱好文学,诗歌。作品散在國际在线,四川日报副刊,四川文艺在线,今日头条,喜马拉雅平台等。  作曲/演唱:陈万  四川音乐学院教授,硕士生导师,四川省学术与技术带头人后备人选,四川省青联委员,中国音乐家协会会员,中国文艺志愿者协会首批会员,四川省音乐家协会理事,四川省文艺评论家协会理事。  演唱
摘要:随着计算机网络技术的迅速发展和日益普及,C/S系统已得到广泛应用。为便于开发C/S结构数据库系统,研究了C/S结构数据库系统的基本构造原理,简要介绍了基于Visual FoxPro 6.0开发C/S结构数据库系统的方法。实践表明,该方法正确有效。  关键词:C/S结构;ODBC;SQL Server;远程视图;连接  中图分类号:TP311.132 文献标识码:A 文章编号:1009-304
摘要:介绍了DirectShow技术的基本概念和Filter Graph及其组成,提出了一个基于DirectShow技术的媒体播放器的设计,并构建了过滤器图表,同时文中详细叙述了软件开发的实现框架。本文以VC 6.0和DirectShow技术开发媒体播放器,并给出了关键代码的示例。  关键词:DirecShow;Filter;Filter Graph;媒体播放器  中图分类号:TP37文献
摘要:本文介绍了电视台硬盘自动播出系统主要技术,分析研究了其中的硬盘的关键技术。  关键词:硬盘;RAID;播出系统  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)18-2pppp-0c    Application Research on the Hard Disk of the HDAPS for Television Station  SUN Yong,REN
摘要:制作钢琴动画的方法很多,但是使用Flash可以说是一种通用的非常有效的方法。使用Flash制作钢琴动画,不仅可以实现简易钢琴的功能,而且界面更加美观、生动,充分发挥了Flash软件的优势。  关键词:影片剪辑;元件;关键帧  中图法分类号:TP319文献标识码:B文章编号:1009-3044(2008)08-10ppp-0c    1 引言    通过各种渠道,相信大家多多少少都见过一些乐器
摘要:朱文颖的小说《戴女士与蓝》以三个主要的极具象征意味的消费场所作为文学文本叙述的支点,为读者精心构筑了一个独特的叙事空间,展示了在商业化时代背景下的人们为消费欲望所扭曲异化的梦境,从而深刻揭示了当代社会消费异化对人性的损害与扭曲,并暗示了某种人类摆脱异化宿命的谶语、重获生命尊严,回归人性真情的心路历程。  关键词:消费场所 人性 异化 心灵 回归  引言  70年代的美女作家朱文颖在创作《高跟
摘要:为了在一定程度上解决教师在不同校区课前课后难以久留、为学生答疑难以实现等问题,本文提出了基于Internet文献检索课教学系统的开发,同时给出了系统的目标,分析了系统功能模块的划分,包括用户信息管理模块、文件管理模块、公告管理模块、个人信息管理模块、作业批改模块、网上答疑模块、退出登陆模块。该系统适应了网络时代发展的要求,无疑对文献检索课教学的改革和发展起着积极推动的作用,有着广阔的发展和应