C# 中如何调用存储过程

2024 年 8 月 29 日 | 4 分钟阅读

被称为存储过程的预编译数据库对象包含一个或多个 SQL 语句。它们保存在数据库服务器上,可被多种应用程序用于执行特定操作或从数据库中获取信息。从您的 C# 程序中调用存储过程可以提供一种模块化和结构化的数据库操作方法,这也有助于提高性能和安全性。我们将通过以下步骤探讨在 C# 中调用存储过程。

建立数据库连接

在调用存储过程之前,您必须使用正确的连接字符串连接到数据库。连接字符串包含数据库服务器的凭据以及其他相关参数。您可以使用 System.Data.SqlClient 命名空间中的 SqlConnection 类来创建连接对象并建立数据库连接。

创建命令对象

当数据库连接建立后,为您希望调用的存储过程创建一个命令对象。该命令对象是 SqlCommand 类的一个实例,允许您定义连接对象和存储过程的名称。

添加参数(如果有)

如果您的存储过程需要参数,您可以使用命令对象上的 Parameters 属性添加它们。参数可以让您的 C# 程序将值传递给存储过程。

您必须指定参数名称(包含“@”符号)和相关的值。对于您的存储过程需要的每个参数,重复此步骤。

执行存储过程

调用命令对象的 ExecuteNonQuery 方法来运行存储过程。此方法用于执行不产生任何输出的操作,如插入、更新和删除。

如果您的存储过程返回一个结果集,您可以使用 ExecuteReader 函数来代替。它会给您一个 SqlDataReader 对象,以便您获取结果集。

关闭连接

在运行存储过程并处理完结果(如果适用)后,关闭数据库连接以释放资源。使用连接对象上的 Close 方法来终止连接。

通过遵循这些说明,您可以轻松地从您的 C# 应用程序中调用存储过程。使用存储过程可以提高数据库操作的安全性和速度,并促进代码的重用和可维护性。请记住处理在此过程中可能出现的任何异常,以确保您的应用程序运行良好。

处理输出参数

存储过程中的输出参数通常用于向调用代码返回值。使用命令对象的 Parameters 集合来获取这些值。在存储过程完成后,可以使用参数名称和 Value 属性来访问输出参数的值。

事务管理

如果您的应用程序需要同时执行多个数据库活动,您可以使用事务。事务确保所有操作要么全部成功,要么没有任何一个操作被执行到数据库中。您可以启动一个事务,运行其中包含的存储过程,然后根据操作的成功或失败,提交或回滚事务。

存储过程返回值

除了输出参数外,存储过程的另一个选择是返回值。返回值是一个表示存储过程执行状态的整数。在运行存储过程后,您可以使用命令对象的 ReturnValue 字段获取返回值。

错误处理

处理在存储过程运行期间可能出现的任何异常至关重要。为了捕获任何与数据库相关的异常,请将您的代码包裹在 try-catch 块中。此外,您可以在 SqlException 类中查找特定的 SQL Server 问题并适当地处理它们。

参数化查询

使用参数化查询可以使数据库服务器优化查询执行,这既降低了 SQL 注入攻击的风险,又提高了速度。您可以使用参数占位符,并使用 Parameters 集合为其提供值,而不是将值拼接到 SQL 表达式中。

通过遵循一些额外的建议和最佳实践,您可以在 C# 中高效地调用存储过程,并提高数据库交互的效率和安全性。