描述ADO .NET命令影响数据源说明

开发 后端
到目前为止,对存储过程讨论得已经够多了,是该看一下如何在ADO .NET命令中使用它了。在ADO .NET中调用存储过程只与常规SQL语句稍微不同。

通过ADO .NET中浏览数据的方式并不是在ADO .NET命令中的方式,你仍需要创建链接,发送命令。在本文中,提到了表示直接SQL命令的类,你可以使用它们执行存储过程。

你应当将存储过程的名字指定为SqlCommand对象的命令文本。命令文本可以通过SqlCommand的构造函数或通过CommandText属性指定。在下面的示例代码中,存储过程的名字是byroyalty。

为帮助SqlCommand辨认出将执行的命令是一个存储过程,应当将CommandType属性设置为特定的值。

  1. SqlCommand cmd = new SqlCommand("byroyalty", conn);  
  2. cmd.CommandType = CommandType.StoredProcedure;  
  3. SqlParameter par = new SqlParameter("@percentage", SqlDbType.Int);  
  4. par.Direction = ParameterDirection.Input;  
  5. par.Value = 15;  
  6. cmd.Parameters.Add(par);  
  7. SqlDataReader dr = cmd.ExecuteReader(); 

它是在CommandType枚举值(即可以在ADO .NET命令中使用的所有可以得到的命令类型)中的一个值。存储过程可能需要一个或多个参数才能运行。在这种情况下,你需要使用SqlParameter类定义参数。

参数具有@前缀名,并是与SQL Server兼容的类型。另外,它还要有一个方向:输入,输出还是两种都有,当然它得是一个值。.NET 类型系统不同于SQL Server类型系统,你必须求助于SqlDbType枚举列表得到正确的类型。例如,下面的片断对.NET32位整型求值。

一条命令在过一定时间后就会超时。如果你知道要经过很长的操作,你就可能希望设置这种限制。象ADO中那样,检查的属性是CommandTimeout,其默认值是30秒。与ADO不同,ADO .NET使你可通过CommandBehavior枚举指定命令的期望行为。

这样的值指定了对结果的描述,并指定查询如何影响数据源。在β1版本中,可以为每个命令设置CommandBehavior属性。从β2版开始,只能使用CommandBehavior枚举值作为ExecuteReader的参数。

对于其它选项,你可以使用查询命令限制获得的关键字和结构信息。在这种情况下,命令执行时不会对选择的行进行锁定。这种行为是由KeyInfo标记设定的。作为可选项,可能只需得到列信息,而不通过加锁影响数据库的状态。这个选项是SchemaOnly。

另一个选项,SingleResult,使你能够指定只返回一个结果集,而不论命令可以得到多少个结果集。在这种情况下,命令只返回找到的***个结果集。第四个选项是CloseConnection,它强迫SqlDataReader对象与一个查询命令联结起来,以期望在Close方法的***一步自动关闭链接。#t#

先前提到过,在ADO .NET命令中不支持服务器指针。如果需要使用服务器指针,并且负担不起在没有它的情况下重建应用程序,唯一的办法是通过ADO对象。要这样做,需要导入ADODB类型库,为不同的对象创建恰当的.NET封装,然后与它们连接起来。然而,在这种情况下,你无法利用ADO .NET的优势。

这样做原因很简单。服务器指针必须与数据库服务器的底层行为相适应。当处于链接时,并不是所有的DBMS以同样的方式工作。这样不同特性的对数据库不可知的实现已经证明是非常困难的。为了避免出现更进一步的问题,ADO .NET命令没有为服务器指针暴露通用的类,从而从根本上消除了这种问题。

然而,用于SQL Server的管理提供者在将来的发行版中将支持服务器指针,其它类型的管理提供者也会发生同样的事情。因此,ADO .NET对服务器指针支持的***回答是,它将提供支持,但是将通过其实现与底层工作方式非常匹配的类以一种严格的完全DBMS方式(提供支持)。

责任编辑:chenqingxiang 来源: 机械工业出版社
相关推荐

2009-12-29 14:36:55

ADO.NET 数据集

2009-12-23 09:55:23

ADO.NET数据源

2009-11-03 14:56:36

ADO.NET数据源

2009-08-13 11:17:34

什么是ADO.NET

2009-12-31 14:23:33

ADO.NET数据源

2009-12-24 16:09:42

ADO.NET数据源

2009-09-08 11:09:39

LINQ数据源

2010-01-04 10:39:33

ADO.NET描述

2009-11-12 11:29:42

ADO.NET连接数据

2010-01-04 13:16:31

ADO.NET命令

2009-12-21 14:04:48

ADO.NET参数

2009-12-31 10:00:32

ADO.NET数据库

2009-12-29 14:24:40

使用ADO.NET

2009-12-18 17:01:21

ADO.NET数据

2009-12-30 15:11:35

ADO.NET数据

2009-12-22 16:50:44

ADO.NET元素

2009-12-22 13:34:48

ADO.Net Tea

2009-12-22 09:43:20

ADO.NET对象

2009-12-28 15:05:56

ADO.NET 数据

2009-12-22 13:49:40

ADO.net属性
点赞
收藏

51CTO技术栈公众号