若要执行返回单个值的存储过程,可以运行一个配置为运行存储过程的 TableAdapter 查询(如 CustomersTableAdapter.CustomerCount())。
如果应用程序不使用 TableAdapter,请调用命令对象上的 ExecuteScalar 方法,将其 CommandType 属性设置为 StoredProcedure。 (“命令对象”是指您的应用程序正在使用的 .NET Framework 数据提供程序的特定命令。https://msdn.microsoft.com/zh-cn/library/a6cd7c08(v=vs.100) 例如,如果应用程序使用的是用于 SQL Server 的 .NET Framework 数据提供程序,则该命令对象为 SqlCommand。)
下面的示例演示如何使用 TableAdapters 或命令对象执行从数据库返回单个值的存储过程。 有关使用 TableAdapter 和命令进行查询的更多信息,请参见 用数据填充数据集。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
使用 TableAdapter 执行返回单个值的存储过程
此示例演示如何使用 TableAdapter 查询配置向导 创建 TableAdapter 查询,然后提供有关如何声明 TableAdapter 的实例并执行查询的信息。
使用 TableAdapter 执行返回单个值的存储过程
- 在**“数据集设计器”**中打开一个数据集。 有关更多信息,请参见如何:在数据集设计器中打开数据集。 
- 如果还没有 TableAdapter,请创建一个。 有关创建 TableAdapter 的更多信息,请参见 如何:创建 TableAdapter。 
- 如果在 TableAdapter 上已有一个使用存储过程返回单个值的查询,请跳到下一步骤,“声明 TableAdapter 的实例并执行查询”。否则,请继续步骤 4 创建一个返回单个值的新查询。 
- 右击所需的 TableAdapter,然后使用快捷菜单添加查询。 - **“TableAdapter 查询配置向导”**将打开。 
- 选择**“使用现有存储过程”,然后单击“下一步”**。 
- 从下拉列表中选择一个存储过程,然后单击**“下一步”**。 
- 选择该选项返回**“单个值”,然后单击“下一步”**。 
- 为该查询提供名称。 
- 单击**“下一步”或“完成”**完成该向导;该查询即被添加到 TableAdapter。 
- 生成您的项目。 
声明 TableAdapter 的实例并执行查询
- 声明一个 TableAdapter 实例,该实例包含要执行的查询。 - 若要使用设计时工具创建实例,请从**“工具箱”拖动所需的 TableAdapter。 (现在,项目中的组件将出现在“工具箱”中,位于与项目名称匹配的标题下。)如果“工具箱”**中没有出现 TableAdapter,则可能需要生成您的项目。 - - 或 - 
- 要在代码中创建实例,请使用您的 DataSet 和 TableAdapter 的名称替换下面的代码。 - Dim tableAdapter As New DataSetTableAdapters.TableAdapter - 提示 - TableAdapter 实际上并不在其关联数据集类内。 每个数据集在其各自命名空间中均有一个相应的 TableAdapter 集合。 例如,如果有一个名为 SalesDataSet 的数据集,就会有一个包含其 TableAdapter 的 SalesDataSetTableAdapters 命名空间。 
 
- 请按照在代码中调用任何其他方法的方式调用查询。 查询是 TableAdapter 上的一个方法。 用您的 TableAdapter 和查询的名称替换下面的代码。 您还需要传入查询所需的任何参数。 如果不能确定查询是否需要参数,或者需要什么参数,请通过 IntelliSense 查看该查询所需的签名。 根据查询是否带有参数,代码可能会类似于以下示例之一: - TableAdapter.Query() - TableAdapter.Query(Parameters) - 声明 TableAdapter 实例并执行查询的完整代码应与以下内容类似: - Dim tableAdapter As New NorthwindDataSetTableAdapters.CustomersTableAdapter() Dim returnValue As Integer returnValue = CType(tableAdapter.GetCustomerCount(), Integer)- NorthwindDataSetTableAdapters.CustomersTableAdapter tableAdapter = new NorthwindDataSetTableAdapters.CustomersTableAdapter(); int returnValue = (int)tableAdapter.GetCustomerCount();
使用命令对象执行返回单个值的存储过程
下面的示例演示如何创建命令和执行返回单个值的存储过程。 有关设置和获取命令参数值的信息,请参见 如何:设置和获取命令对象的参数。
此示例使用 SqlCommand 对象并且需要:
- 对 System、System.Data 和 System.Xml 命名空间的引用。 
- 名为 SqlConnection1 的数据连接。 
- SqlConnection1 所连接到的数据源中名为 Customers 的表。 (否则,您需要一条对您的数据源有效的 SQL 语句。) 
使用 DataCommand 执行返回单个值的存储过程
- 将下面的代码添加到要用于执行该代码的方法中。 通过调用命令(例如,ExecuteScalar)的 ExecuteScalar 方法可返回单个值。 此数据返回到 object 中。 - Dim sqlConnection1 As New SqlConnection("Your Connection String") Dim cmd As New SqlCommand Dim returnValue As Object cmd.CommandText = "StoredProcedureName" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = sqlConnection1 sqlConnection1.Open() returnValue = cmd.ExecuteScalar() sqlConnection1.Close()- SqlConnection sqlConnection1 = new SqlConnection("Your Connection String"); SqlCommand cmd = new SqlCommand(); Object returnValue; cmd.CommandText = "StoredProcedureName"; cmd.CommandType = CommandType. StoredProcedure; cmd.Connection = sqlConnection1; sqlConnection1.Open(); returnValue = cmd.ExecuteScalar(); sqlConnection1.Close();