C#编程:调用SQL存储过程的详细教程
"这是一个关于C#调用SQL Server存储过程的简单完整示例。" 在.NET编程中,尤其是使用C#时,经常需要与数据库进行交互,而调用存储过程是常见的操作之一。存储过程是在数据库中预编译的SQL语句集合,可以提高性能,封装复杂逻辑,并提供更好的安全性。本示例将详细解释如何在C#中执行这一过程。 首先,我们创建一个名为`CREATEPROCP_TEST`的SQL Server存储过程。这个存储过程接收一个输入参数`@Name`(类型为VARCHAR(20)),并定义一个输出参数`@Rowcount`(类型为INT)。存储过程的主要功能是查询`T_Customer`表中名字为`@Name`的记录,并将返回的行数赋值给`@Rowcount`。 ```sql CREATE PROCEDURE CREATEPROCP_TEST @Name VARCHAR(20), @Rowcount INT OUTPUT AS BEGIN SELECT * FROM T_Customer WHERE NAME = @Name SET @Rowcount = @@ROWCOUNT END GO ``` 在SQL Server Management Studio中,你可以通过声明一个变量`@i`并调用存储过程来测试它,同时将输出参数传递给`@i`。运行后,你会看到查询结果以及返回的行数。 ```sql DECLARE @i INT EXEC CREATEPROCP_TEST 'A', @i OUTPUT SELECT @i ``` 接下来,我们需要在C#应用程序中配置数据库连接。这通常在Web.config或App.config文件中完成。以下是一个简单的配置示例: ```xml <configuration> <system.web> <!-- 其他配置 --> </system.web> <appSettings> <add key="ConnectString" value="server=(local);UserID=sa;Password=;database=Test" /> </appSettings> </configuration> ``` 在C#代码中,我们可以使用ADO.NET库来调用存储过程。下面是一个示例,展示了如何在控制台应用程序中实现这一操作,包括打开连接、创建命令对象、设置参数、执行存储过程以及关闭连接。这里假设你有一个DataGrid1用于显示结果,一个Label用于显示行数。 ```csharp using System; using System.Data; using System.Data.SqlClient; public class Program { static void Main() { string connectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectString"]; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // 创建SqlCommand对象,设置存储过程名 SqlCommand command = new SqlCommand("CREATEPROCP_TEST", connection); command.CommandType = CommandType.StoredProcedure; // 添加输入参数 command.Parameters.AddWithValue("@Name", "A"); // 添加输出参数 SqlParameter rowCountParam = new SqlParameter("@Rowcount", SqlDbType.Int); rowCountParam.Direction = ParameterDirection.Output; command.Parameters.Add(rowCountParam); // 执行存储过程 command.ExecuteNonQuery(); // 获取输出参数的值 int rowCount = (int)rowCountParam.Value; // 显示行数 Console.WriteLine($"找到的记录数: {rowCount}"); // 关闭连接 connection.Close(); } } } ``` 如果在Web环境中,例如ASP.NET,你可能需要将上述代码整合到一个处理程序或控制器方法中,以便在用户请求时执行。同时,数据绑定到DataGrid1和更新Label的内容也需要在对应的事件处理程序中完成,例如在页面加载完成后或按钮点击事件中。 这个例子展示了如何在C#中调用SQL Server存储过程,包括设置输入和输出参数,以及处理返回的结果。确保正确配置数据库连接字符串,并根据实际需求调整代码中的参数和操作。
CREATE PROC P_TEST
@Name VARCHAR(20),
@Rowcount INT OUTPUT
AS
BEGIN
SELECT * FROM T_Customer WHERE NAME=@Name
SET @Rowcount=@@ROWCOUNT
END
GO
----------------------------------------------------------------------------------------
--存储过程调用如下:
----------------------------------------------------------------------------------------
DECLARE @i INT
EXEC P_TEST 'A',@i OUTPUT
SELECT @i
--结果
/*
Name Address Tel
---------- ---------- --------------------
A Address Telphone
(所影响的行数为 1 行)
-----------
1
(所影响的行数为 1 行)
*/
----------------------------------------------------------------------------------------
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多传感器数据融合手册:国外原版技术指南
- MyEclipse快捷键大全,提升编程效率
- 从零开始的编程学习:Linux汇编语言入门
- EJB3.0实例教程:从入门到精通
- 深入理解jQuery源码:解析与分析
- MMC-1电机控制ASSP芯片用户手册
- HS1101相对湿度传感器技术规格与应用
- Shell基础入门:权限管理与常用命令详解
- 2003年全国大学生电子设计竞赛:电压控制LC振荡器与宽带放大器
- Android手机用户代理(User Agent)详解与示例
- Java代码规范:提升软件质量和团队协作的关键
- 浙江电信移动业务接入与ISAG接口实战指南
- 电子密码锁设计:安全便捷的新型锁具
- NavTech SDAL格式规范1.7版:车辆导航数据标准
- Surfer8中文入门手册:绘制等高线与克服语言障碍
- 排序算法全解析:冒泡、选择、插入、Shell、快速排序