• System.Data : ParameterDirection参数类型


    1. System.Data

        The ParameterDirection values are used by the parameter direction properties of OleDbParameter and SqlParameter.

    2.  ParameterDirection是一个枚举类型,提供了四种参数类型:

    using System;

    namespace System.Data
    {
        
    // Summary:
        
    //     Specifies the type of a parameter within a query relative to the System.Data.DataSet.
        public enum ParameterDirection
        {
            
    // Summary:
            
    //     The parameter is an input parameter.
            Input = 1,
            
    //
            
    // Summary:
            
    //     The parameter is an output parameter.
            Output = 2,
            
    //
            
    // Summary:
            
    //     The parameter is capable of both input and output.
            InputOutput = 3,
            
    //
            
    // Summary:
            
    //     The parameter represents a return value from an operation such as a stored
            
    //     procedure, built-in function, or user-defined function.
            ReturnValue = 6,
        }
    }

     ==

        // 摘要:
        
    // 指定查询内的有关 System.Data.DataSet 的参数的类型。
        public enum ParameterDirection
        {
            
    // 摘要:
            
    //     参数是输入参数。
            Input = 1,
            
    //
            
    // 摘要:
            
    //     参数是输出参数。
            Output = 2,
            
    //
            
    // 摘要:
            
    //     参数既能输入,也能输出。
            InputOutput = 3,
            
    //
            
    // 摘要:
            
    //     参数表示诸如存储过程、内置函数或用户定义函数之类的操作的返回值。
            ReturnValue = 6,
        }

    3.简单说明:

        1). .Net中的参数定义为形式参数 而把存储过程的参数定义为实际参数;

        2). 数据库存储过程的实际参数如果没有默认值则形式参数必须传值给实际参数;

        3). 但是如果形式参数的类型为ParameterDirection.Output 则传给实际参数的永远是空值;

        4). 如果形式参数的类型为ParameterDirection.ReturnValue 则形式参数不会传值给实际参数 实际参数必须有默认值  否则代码会报错;

        5). 如果形式参数类型为ParameterDirection.InputOutput 或者 ParameterDirection.Output 则实际参数必须有output 关键字.


    4.Example 实例 :

    static void GetSalesByCategory(string connectionString,  string categoryName)
    {
        
    using (SqlConnection connection = new SqlConnection(connectionString))
        {
            
    // Create the command and set its properties.
            SqlCommand command = new SqlCommand();
            command.Connection 
    = connection;
            command.CommandText 
    = "SalesByCategory";
            command.CommandType 
    = CommandType.StoredProcedure;

            
    // Add the input parameter and set its properties.
            SqlParameter parameter = new SqlParameter();
            parameter.ParameterName 
    = "@CategoryName";
            parameter.SqlDbType 
    = SqlDbType.VarChar;
            parameter.Direction 
    = ParameterDirection.Input;
            parameter.Value 
    = categoryName;

            
    // Add the parameter to the Parameters collection. 
            command.Parameters.Add(parameter);

            
    // Open the connection and execute the reader.
            connection.Open();
            SqlDataReader reader 
    = command.ExecuteReader();

            
    if (reader.HasRows)
            {
                
    while (reader.Read())
                {
                    Console.WriteLine(
    "{0}: {1:C}", reader[0], reader[1]);
                }
            }
            
    else
            {
                Console.WriteLine(
    "No rows found.");
            }
            reader.Close();
        }
    }

        另外需要注意的是在.net中 System.DBNull.Value表示数据库参数为空值 而不是null.

            private static void AttachParameters(SqlCommand command, SqlParameter[] commandParameters)
            {
                
    if (command == nullthrow new ArgumentNullException("command");
                
    if (commandParameters != null)
                {
                    
    foreach (SqlParameter p in commandParameters)
                    {
                        
    if (p != null)
                        {
                            
    // Check for derived output value with no value assigned
                            if ((p.Direction == ParameterDirection.InputOutput ||
                                p.Direction 
    == ParameterDirection.Input) &&
                                (p.Value 
    == null))
                            {
                                p.Value 
    = DBNull.Value;
                            }
                            command.Parameters.Add(p);
                        }
                    }
                }
            }
  • 相关阅读:
    String,StringBuffer与StringBuilder的区别??
    Android之NDK开发的简单实例
    Eclipse在线安装插件奇慢的解决办法
    Android之Windows下生成动态库so并打包到APK中
    Android打包之Ant多渠道打包的实现
    Android打包之Ant打入第三方jar包及zipalign对齐优化
    Android打包之将bat脚本转换成ant脚本
    Android打包之bat脚本打包
    利用ant和dedex解析classes.dex
    Ant详解(用Ant实现Java项目的自动构建和部署)
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1336406.html
Copyright © 2020-2023  润新知