动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   .Net → 阅读文章

 ADO .NET命令

作者来源: 
阅读 数 344 人次 , 2006-4-26 10:40:00 

在ADO中,有三种可能方式用于更新数据源。一个是通过直接SQL语句,如INSERT, DELETE 或 UPDATE,或稍复杂、较成熟的存储过程。另一个是通过批更新,你一次可以向服务器递交某个表的新映射。第三个方法是使用服务器指针直接对字段更新。

  ADO .NET完全支持前两种技术,这涉及到不是的对象和方法。至于服务器指针,需要做进一步的讨论和确认,但到目前为止,在ADO .NET中它们只得到有限的支持。

  下面开始分析在ADO .NET中更新数据源的方法和技术。本月,我将重点放在直接SQL命令和存储过程上。在以后的专栏中,我将同时详细介绍批更新和服务器指针。

  OLE DB 和"管理"提供者

  ADO .NET并不直接支持OLE DB提供者,但这并不是说你不能从ADO .NET中访问OLE DB提供者。对此,我只是要表明一个特殊的管理提供者总是对访问任何现有的有效OLE DB提供的调用进行预处理。出于这个原因,你的ADO .NET永远不会直接作为一个OLE DB客户。

  管理提供者是在.NET中工作的一种模块,它的工作方式与OLE DB在Win32? 和 COM环境中的工作方式相同。从任何角度来说,管理提供者是OLE DB的.NET对应物。它们是简化了的组件,并不象OLE DB那样遵循复杂的通用的规范(如通用数据访问)。

  更重要的是,管理提供者完全能在.NET的通用语言运行时(Common Language Runtime ,CLR)环境中工作。相反,OLE DB提供者是一个老COM对象,在.NET环境中,它只能运行在非管理窗口中。

  为了访问ADO.NET中的数据,你应当遵循典型ADO会话中的同样步骤。首先,创建链接,通过连接字符串指定参数。接着,实例化命令对象,设置正确的命令字和行为,然后执行。最后,根据命令的期望输出,或者你操纵结果,或者关闭链接,将其余工作留给应用程序。

  注意,在ADO中可以减少一些步骤,如直接调用Connection对象的Execute方法。这种做法在ADO .NET中是不允许的,因为并不是所有类型的Connection对象具有Execute方法。

  不同类型的链接对象?这又意味着什么呢?

  ADO .NET要求你在链接时事先知道并指定将链接到的(管理)数据提供者的类型。在ADO中,你拥有Connection对象,这就足够了,而不必考虑获得和设置数据的物理通道。不论是使用OLE DB ,还是归结为ODBC,通过供ODBC使用的通用OLE DB提供者,ADO 总是要求使用同种类型的Connection对象。在ADO .NET中情况就不是这样了。

  到目前为止,有两种类型的管理提供者,一个专门用于SQL Server 7.0 和 2000,另一个用于访问任何OLE DB提供者。通过管理提供者,容易辨别出这种设计方式与在ADO中允许ODBC数据源访问OLE DB的方式是相同的。

  用于访问ODBC数据源的第三方管理提供者现在处于测试阶段。事实上,用于OLE DB的管理提供者不支持ADO中用于同ODBC驱动对话的MSDASQL OLE DB提供者。

  SQL Server是在System.Data.SqlClient名称空间中定义它的类的。OLE DB 管理提供者大部分定义在System.Data.OleDb名称空间中。

  在ADO .NET中,不存在通用而又有用的链接类。存在一个DBConnection类,其它其它特定于提供者的链接类从该类派生,但它是一个抽象类。作为原形设计,它是有用的,但它不会直接在应用程序中使用。

  因此,为打开一个链接,必须使用下面的两个方法之一:SqlConnection 方法和 OleDbConnection方法。如果目标是SQL Server 7.0, SQL Server 2000或更高版本,使用前者。如果目标是OLE DB提供者,就应当使用后者。如果需要通过ODBC驱动器访问数据,就要使用ODBC .NET提供者的链接类(名为OdbcConnection)。

  要访问SQL Server数据库,使用直接管理提供者将产生更加有效的代码。然而,注意如果需要访问SQL Server6.5,那么就必须求助于OLE DB提供者,并使用OleDbXxx类和用于OLE DB的管理提供者。

  因此,在ADO .NET中有许多成对的类,如SqlConnection 和 OleDbConnection, SqlCommand 和 OleDbCommand, SqlDataReader 和 OleDbDataReader等等。尽管不同的对间最大的不同可能在于它的前缀,但如果说它们对编程接口是相同的,却是不对的。

  可以确定的是,每对类做同样的事情,但它们所有的接口反映的是底层的数据提供者。例如,在SqlConnection对象上没有Provider属性,而在类中没有PacketSize 或 WorkStationId 概念。

  在本文的后面部分,我将使用SQL Server管理提供者,这将意味着面向数据的ADO .NET类将带有Sql前缀。在先前否认声明有效的前提下,不需要对代码进行修改或进行有限修改,它就能工作,对于由OLE DB提供者暴露的数据源也是一样的。
  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:还记得个性金条么?自制玩笑超级轰动新闻
· 下一篇:ASP.NET+Web服务实现软件共享
· 用VS.NET2003制作WEB应用程序的安装包
· 在 .NET Framework 中表示 XML 的最佳做法
· C++编程人员容易犯的10个C#错
· ASP.NET Web Matrix开发工具简介
· 一个有KeepConnection开关的C#的Database类


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077