.NET调用SQL存储过程全解析

0 下载量 35 浏览量 更新于2024-08-29 收藏 43KB PDF 举报
“.net调用存储过程详细介绍” 在.NET框架中,调用SQL Server的存储过程是常见的数据库操作。本文将详细介绍如何通过C#代码来实现这一功能,主要分为两个部分:只返回单一记录集的存储过程和没有输入输出参数的存储过程。 1. 只返回单一记录集的存储过程 在.NET中,使用ADO.NET组件可以方便地调用存储过程并获取结果集。首先,我们需要创建一个`SqlConnection`对象,通过配置文件中的连接字符串初始化它。连接字符串通常在`app.config`或`web.config`文件中定义,如下所示: ```xml <connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=.;Initial Catalog=Northwind;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> ``` 然后,创建一个`SqlCommand`对象,设置其`Connection`属性为`SqlConnection`实例,并将`CommandText`设置为存储过程的名称,`CommandType`设置为`CommandType.StoredProcedure`。以下是一个示例代码: ```csharp string conn = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString; using (SqlConnection sqlConn = new SqlConnection(conn)) { SqlCommand cmd = new SqlCommand(); cmd.Connection = sqlConn; cmd.CommandText = "Categoriestest1"; cmd.CommandType = CommandType.StoredProcedure; SqlDataAdapter dp = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); dp.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind(); } ``` 这里,`Categoriestest1`是一个返回所有类别信息的存储过程,其定义可能如下: ```sql CREATE PROCEDURE Categoriestest1 AS SELECT * FROM Categories GO ``` 2. 没有输入输出参数的存储过程 对于不涉及输入输出参数的存储过程,调用方式与上文类似,只是不需要额外设置参数。假设我们有一个删除所有记录的存储过程`Categoriestest2`: ```sql CREATE PROCEDURE Categoriestest2 AS DELETE FROM Categories GO ``` 在C#中调用这个存储过程,代码如下: ```csharp string conn = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString; using (SqlConnection sqlConn = new SqlConnection(conn)) { SqlCommand cmd = new SqlCommand(); cmd.Connection = sqlConn; cmd.CommandText = "Categoriestest2"; cmd.CommandType = CommandType.StoredProcedure; sqlConn.Open(); cmd.ExecuteNonQuery(); } ``` 在这个例子中,`ExecuteNonQuery`方法用于执行非查询操作,如插入、更新、删除等。 总结来说,调用存储过程的关键在于建立正确的数据库连接,设置好`SqlCommand`对象的属性,以及根据需要选择合适的执行方法。对于有输入输出参数的情况,还需要创建并添加`SqlParameter`对象到`SqlCommand`的`Parameters`集合中。在.NET中,这种方式提供了灵活且高效的数据库交互手段。