参数方向有什么用

本文关键字:什么 方向 参数 | 更新日期: 2023-09-27 18:33:33

我是C#的新手。在某些代码中,我看到了一个名为 ParameterDirection 的属性。谁能告诉我这是什么?以及如何使用它?

参数方向有什么用

ParameterDirection用于获取OUTPUT参数的值,ReturnValue .NET中的Stored procedure

有关更多详细信息,请参阅 MSDN

例:

using System;
using System.Data;
using System.Data.SqlClient;
class ExecuteAddProduct {
    public static void Main() {
        SqlConnection mySqlConnection = new SqlConnection("server=localhost;database=Northwind;uid=sa;pwd=sa");
        mySqlConnection.Open();
        SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
        mySqlCommand.CommandText =
          "EXECUTE AddProduct @MyProductID OUTPUT, @MyProductName, " +
          "@MySupplierID, @MyCategoryID, @MyQuantityPerUnit, " +
          "@MyUnitPrice, @MyUnitsInStock, @MyUnitsOnOrder, " +
          "@MyReorderLevel, @MyDiscontinued";
        mySqlCommand.Parameters.Add("@MyProductID", SqlDbType.Int);
        mySqlCommand.Parameters["@MyProductID"].Direction = ParameterDirection.Output;
        mySqlCommand.Parameters.Add("@MyProductName", SqlDbType.NVarChar, 40).Value = "Widget";
        mySqlCommand.Parameters.Add("@MySupplierID", SqlDbType.Int).Value = 1;
        mySqlCommand.Parameters.Add("@MyCategoryID", SqlDbType.Int).Value = 1;
        mySqlCommand.Parameters.Add("@MyQuantityPerUnit", SqlDbType.NVarChar, 20).Value = "1 per box";
        mySqlCommand.Parameters.Add("@MyUnitPrice", SqlDbType.Money).Value = 5.99;
        mySqlCommand.Parameters.Add("@MyUnitsInStock", SqlDbType.SmallInt).Value = 10;
        mySqlCommand.Parameters.Add("@MyUnitsOnOrder", SqlDbType.SmallInt).Value = 5;
        mySqlCommand.Parameters.Add("@MyReorderLevel", SqlDbType.SmallInt).Value = 5;
        mySqlCommand.Parameters.Add("@MyDiscontinued", SqlDbType.Bit).Value = 1;
        mySqlCommand.ExecuteNonQuery();
        Console.WriteLine("New ProductID = " + mySqlCommand.Parameters["@MyProductID"].Value);
        mySqlConnection.Close();
    }
}

有4种类型的参数方向输入,输出,输入输出,返回值。从命名空间使用 System.Data 使用 ParameterDirection

它可用于分配 dbull,如下所示

foreach (SqlParameter param in commandParameters)
{
    if( param != null )
    {
        //It will check for input and output parameter
        if ( ( param.Direction == ParameterDirection.InputOutput || 
            param.Direction == ParameterDirection.Input ) && 
            (param.Value == null))
        {
            param.Value = DBNull.Value;
        }
        command.Parameters.Add(param);
    }
}