📅  最后修改于: 2023-12-03 15:12:12.077000             🧑  作者: Mango
在 C# 中,我们可以使用 ADO.NET 来调用数据库的存储过程。存储过程是一段可重用的代码,可以在数据库中进行存储,它可以接受输入参数并返回输出参数和结果集合。存储过程可以提高数据库中数据的安全性和可维护性。
以下是使用 ADO.NET 调用存储过程的步骤:
创建连接对象
using System.Data.SqlClient;
SqlConnection connection = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");
在这里,我们使用 SqlConnection
类来创建与数据库的连接。请注意,我们需要提供服务器地址、数据库名称和用户名/密码等信息。
创建命令对象
SqlCommand command = new SqlCommand("存储过程名称", connection);
command.CommandType = CommandType.StoredProcedure;
命令对象可以用于执行 SQL 查询或调用存储过程。我们需要使用 SqlCommand
类来调用存储过程。 CommandType
属性应设置为 CommandType.StoredProcedure
,以指明这是一个存储过程。
添加输入参数
SqlParameter parameter = new SqlParameter("@参数名称", value);
parameter.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter);
如果存储过程需要输入参数,则我们需要使用 SqlParameter
类来创建参数并将其添加到 SqlCommand
对象的 Parameters
集合中。
添加输出参数
SqlParameter parameter = new SqlParameter("@参数名称", SqlDbType.NVarChar, 50);
parameter.Direction = ParameterDirection.Output;
command.Parameters.Add(parameter);
如果存储过程需要输出参数,则我们需要使用 SqlParameter
类来创建参数并将其添加到 SqlCommand
对象的 Parameters
集合中。注意,为了将 SqlParameter 按名称或按位置分配给存储过程的参数,应指定 SqlParameter 对象的 ParameterName 或 ParameterOrdinal 属性。
创建适配器对象
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet dataSet = new DataSet();
数据适配器可以用于将 SqlCommand
对象的结果集填充到 DataSet
中。
执行命令
connection.Open();
adapter.Fill(dataSet);
connection.Close();
最后,我们需要打开连接并执行命令。执行存储过程将返回结果集或更新计数,这取决于存储过程的类型。
取回输出参数
string outputValue = command.Parameters["@参数名称"].Value.ToString();
如果存储过程返回了输出参数,则我们需要从 SqlCommand
对象中检索到该参数的值。可以使用 SqlParameter
对象的 Value
属性来访问该值。
using System.Data.SqlClient;
public void CallStoredProcedure()
{
using (SqlConnection connection = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"))
{
using (SqlCommand command = new SqlCommand("存储过程名称", connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter1 = new SqlParameter("@参数名称1", value1);
parameter1.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter1);
SqlParameter parameter2 = new SqlParameter("@参数名称2", SqlDbType.NVarChar, 50);
parameter2.Direction = ParameterDirection.Output;
command.Parameters.Add(parameter2);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet dataSet = new DataSet();
connection.Open();
adapter.Fill(dataSet);
connection.Close();
string outputValue = command.Parameters["@参数名称2"].Value.ToString();
}
}
}
通过以上步骤,我们可以在 C# 中调用存储过程并处理它们的输入和输出参数。这大大提高了数据操作的效率,在大型项目开发中也需要灵活使用。