📜  调用存储过程 c# (1)

📅  最后修改于: 2023-12-03 15:12:12.077000             🧑  作者: Mango

调用存储过程 C#

在 C# 中,我们可以使用 ADO.NET 来调用数据库的存储过程。存储过程是一段可重用的代码,可以在数据库中进行存储,它可以接受输入参数并返回输出参数和结果集合。存储过程可以提高数据库中数据的安全性和可维护性。

步骤

以下是使用 ADO.NET 调用存储过程的步骤:

  1. 创建连接对象

    using System.Data.SqlClient;
    SqlConnection connection = new SqlConnection("Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;");
    

    在这里,我们使用 SqlConnection 类来创建与数据库的连接。请注意,我们需要提供服务器地址、数据库名称和用户名/密码等信息。

  2. 创建命令对象

    SqlCommand command = new SqlCommand("存储过程名称", connection);
    command.CommandType = CommandType.StoredProcedure;
    

    命令对象可以用于执行 SQL 查询或调用存储过程。我们需要使用 SqlCommand 类来调用存储过程。 CommandType 属性应设置为 CommandType.StoredProcedure,以指明这是一个存储过程。

  3. 添加输入参数

    SqlParameter parameter = new SqlParameter("@参数名称", value);
    parameter.Direction = ParameterDirection.Input;
    command.Parameters.Add(parameter);
    

    如果存储过程需要输入参数,则我们需要使用 SqlParameter 类来创建参数并将其添加到 SqlCommand 对象的 Parameters 集合中。

  4. 添加输出参数

    SqlParameter parameter = new SqlParameter("@参数名称", SqlDbType.NVarChar, 50);
    parameter.Direction = ParameterDirection.Output;
    command.Parameters.Add(parameter);
    

    如果存储过程需要输出参数,则我们需要使用 SqlParameter 类来创建参数并将其添加到 SqlCommand 对象的 Parameters 集合中。注意,为了将 SqlParameter 按名称或按位置分配给存储过程的参数,应指定 SqlParameter 对象的 ParameterName 或 ParameterOrdinal 属性。

  5. 创建适配器对象

    SqlDataAdapter adapter = new SqlDataAdapter(command);
    DataSet dataSet = new DataSet();
    

    数据适配器可以用于将 SqlCommand 对象的结果集填充到 DataSet 中。

  6. 执行命令

    connection.Open();
    adapter.Fill(dataSet);
    connection.Close();
    

    最后,我们需要打开连接并执行命令。执行存储过程将返回结果集或更新计数,这取决于存储过程的类型。

  7. 取回输出参数

    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# 中调用存储过程并处理它们的输入和输出参数。这大大提高了数据操作的效率,在大型项目开发中也需要灵活使用。