<script type="text/javascript"> var sectionFilter = "type != 'notice' && type != 'securedata' && type != 'querywords'"; var tocArrow = "/library/images/support/kbgraphics/public/en-us/downarrow.gif"; var depthLimit = 10; var depth3Limit = 10; var depth4Limit = 5; var depth5Limit = 3; var tocEntryMinimum = 1; </script> <script src="/common/script/gsfx/kbtoc.js??4" type="text/javascript"></script>
概要
<script type="text/javascript">loadTOCNode(1, 'summary');</script>
有多种方法使用 ADO.NET 调用存储过程并获得返回值和返回参数,其中包括:
本文演示后三种方法,并使用
SqlCommand 和
OleDbCommand 这两个对象。确保只复制对应于您在使用的托管提供程序的代码。如果您不确定应该使用哪个托管提供程序,请访问下面的 Microsoft Developer Network 网站:
• | 使用 DataSet 对象,在获得返回值和返回参数之外,还可以收集并使用返回的数据行。 |
• | 使用 DataReader 对象收集返回的行,遍历这些行,然后收集返回值和返回参数。 |
• | 使用 ExecuteScalar 方法返回结果中第一行的第一列的值以及返回值和返回参数。这对于聚合函数特别有用。 |
• | 使用 ExecuteNonQuery 方法只返回参数和值。任何返回的行都将被丢弃。这对于执行操作查询特别有用。 |
.NET 数据提供程序
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconadonetproviders.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconadonetproviders.asp)
在本文的每个示例中,这些参数都被添加到
Command 对象的
Parameters 集合中。使用
SqlCommand 对象时,您不必按照任何特定的顺序添加参数,但必须保证参数名正确。使用
OleDbCommand 对象时,必须按照正确的顺序添加参数,不能按照名称使用参数。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconadonetproviders.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconadonetproviders.asp)
使用 DataReader 返回行和参数
<script type="text/javascript">loadTOCNode(2, 'summary');</script> 您可以使用 DataReader 对象返回只读的仅向前型数据流。 DataReader 中所包含的信息可以来自一个存储过程。本示例使用 DataReader 对象运行带有输入和输出参数的存储过程,然后遍历返回记录,以查看返回参数。使用 Command 对象的 ExecuteScalar 方法
<script type="text/javascript">loadTOCNode(2, 'summary');</script> 可以使用 Command 对象的 ExecuteScalar 方法检索参数值。另外, ExecuteScalar 返回该存储过程的第一行的第一列。这对于聚合函数特别有用,如下例所示。1. | 在运行 SQL Server 的服务器上创建下面的存储过程: |
2. | 新建一个新的 Visual C# .NET Windows 应用程序项目。 |
3. | 对 System 和 System.Data 命名空间使用 using 语句,这样,在后面的代码中就无需限定这些命名空间中的声明了。将此代码添加到“窗体”代码模块的顶部。请确保只复制对应于您所选的提供程序的代码。SQL 客户端 OLE DB 数据提供程序 |
4. | 将下面的代码添加到 Form_Load 事件:SQL 客户端 OLE DB 数据提供程序 |
5. | 修改 Connection 对象的连接字符串,以便指向运行 SQL Server 的计算机。 |
6. | 运行上述代码。注意,Command 对象的 ExecuteScalar 方法将返回参数。ExecuteScalar 还将返回所返回的行集中的第一行第一列的值。因此,intCount 的值是存储过程的 count 函数的结果。 |