C#连接与执行存储过程示例:创建SqlCommand并传递参数

需积分: 35 5 下载量 163 浏览量 更新于2024-11-13 收藏 857B TXT 举报
在C#编程中,操作数据库存储过程是一个常见的任务,尤其是在处理复杂的业务逻辑或数据管理时。本文将详细介绍如何通过实例化`SqlConnection`对象来执行存储过程。首先,我们需要创建一个`SqlConnection`对象,这个对象代表与数据库的连接,用于发送SQL命令。 ```csharp SqlConnection conn = new SqlConnection(); // 实例化SqlConnection对象 ``` 在这里,`SqlConnection`类是ADO.NET的一部分,它提供了与SQL Server数据库交互的基础。`ConnectionString`属性需要设置为应用程序配置中的连接字符串,以指定数据库的位置和凭据。 ```csharp conn.ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); ``` `WebConfigurationManager.ConnectionStrings`是用于获取配置文件中预定义的数据库连接字符串的工具,"ConnectionString"是配置文件中存储的连接字符串的键名。 接下来,我们实例化一个`SqlCommand`对象,用于执行存储过程: ```csharp SqlCommand rscm = new SqlCommand("BookDel", conn); // 实例化SqlCommand对象 ``` `rscm`对象的`CommandType`属性被设置为`CommandType.StoredProcedure`,这意味着我们将执行的是存储过程,而不是普通的SQL查询。 ```csharp rscm.CommandType = CommandType.StoredProcedure; ``` 为了传递参数给存储过程,我们需要创建一个`SqlParameter`对象,并添加到`rscm.Parameters`集合中。例如,如果有一个名为`@id`的输入参数,我们可以这样创建: ```csharp SqlParameter delid = new SqlParameter("@id", SqlDbType.Int); // 创建SqlParameter对象 delid.Value = Convert.ToInt32(id.Text); // 设置参数值 rscm.Parameters.Add(delid); ``` 这里假设`id.Text`是从用户界面获取的整数值,它会被传递给存储过程的`@id`参数。 当我们准备好执行存储过程时,可以使用`ExecuteNonQuery()`方法,这个方法用于执行非查询操作(如插入、更新或删除数据),并返回受影响的行数。 ```csharp rscm.ExecuteNonQuery(); ``` 如果需要获取存储过程的执行结果并进行进一步的数据操作,可以使用`ExecuteReader()`方法。然而,在这个例子中,由于`ExecuteNonQuery()`已经完成,我们通常不期待有返回结果集。 最后,记得关闭数据库连接和命令对象以释放系统资源: ```csharp rscm.Dispose(); // 释放SqlCommand对象 conn.Dispose(); // 释放SqlConnection对象 ``` 这个C#代码示例展示了如何通过`SqlConnection`和`SqlCommand`来执行存储过程,包括创建连接、设置参数、执行命令以及正确地进行资源管理。这对于任何需要在C#中与数据库交互的开发者来说都是非常基础且实用的知识。