.net调用存储过程时的输出函数

两年以前,我曾经因为输出的参数取不全而不用这个 Output了,今天我才知道bug所在,我没有指定Output的大小 ,如代码红字(ExecuteSqlCommandSql就是个执行存储过程的方法,这不写了)   

另外,如果定义parameters[3].Direction = ParameterDirection.InputOutput;的话,如果不指定大小,那么你输入多长,那么返回字符串的长度就是多长

public String ChangePassword(String OrginUserId, String Password, String NewPassword)
        {
            SqlParameter[] parameters = {
                new SqlParameter("@OrginUserId",OrginUserId),
                new SqlParameter("@Password",Password),
                new SqlParameter("@NewPassword",NewPassword),
                new SqlParameter("@ErrorMessage", SqlDbType.NVarChar,15)
            };
            parameters[3].Direction = ParameterDirection.Output;
            SQLHelper MySQLHelper = new SQLHelper();
            String ReturnStr;
            try
            {
                MySQLHelper.ExecuteSqlCommandSql(_ChangePassword, parameters);
                ReturnStr = parameters[3].Value.ToString();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return ReturnStr;
        }

你可能感兴趣的:(.net)