foreach (SqlParameter parameter in cmdParms)
                {
                    if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                        (parameter.Value == null))
                    {
                        parameter.Value = DBNull.Value;
                    }
                    cmd.Parameters.Add(parameter);
                }

解决方案 »

  1.   

    在cmdParms所有的参数中:一个参数如果满足:
      如果参数是(既能输入也能输出的或者参数是能输入的)并且(参数为空),
         那么将这个参数赋值为数据库中的空值。
      

  2.   

    那这样做的目的是什么?下面是这个函数的整段代码。
    private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                if (trans != null)
                    cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;//cmdType;
                if (cmdParms != null)
                {
                    foreach (SqlParameter parameter in cmdParms)
                    {
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(parameter);
                    }
                }
            }
      

  3.   

    就是把用户输入的空值转换成数据库的空值null
      

  4.   

    用户输入的空值和数据库的空值NULL有什么区别呢?
      

  5.   

    你理解错误了
    parameter.Value   ==   null;
    指的这个参数用户还有没有指定任何值
    parameter.Value   =   DBNull.Value
    这个给他指定一个空值同时对于程序编写来说null指的是什么都没有  -->这种情况会引发空引用的异常
    DBNull.Value 表明有一个空值  -->这种情况不会
    上述程序我认为主要作用还是避免出现空引用的异常.事实上只是加工了一下