public partial class HR_SetPassword : Form
    {
        public string AdminName { get;set;}
        public HR_SetPassword()
        {
            InitializeComponent();
        }        private void btnxiugai_Click(object sender, EventArgs e)
        {
            //这样定义也不是报错
            //string AdminName = this.AdminName;  GetByAdminName存储过程的名字
            Administrator admin = new AdministratorBLL().GetByAdminName(this.AdminName);
            if (txbyuanshimima.Text == "" || txbnewmima.Text == "" ||txbok.Text == "")
            {
                MessageBox.Show("密码输入不能为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                txbyuanshimima.Text = "";
                txbnewmima.Text = "";
                txbok.Text = "";
            }
            else if (admin.AdminPwd != txbyuanshimima.Text.Trim())
            {
                MessageBox.Show("用户密码不正确!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
               txbyuanshimima.Text = "";
                txbnewmima.Text = "";
                txbok.Text = "";
            }
            else if (txbnewmima.Text.Trim() != txbok.Text.Trim())
            {
                MessageBox.Show("密码输入不一致!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txbyuanshimima.Text = "";
                txbnewmima.Text = "";
                txbok.Text = "";
            }
            else if (AdminName != null)
            {
                Administrator ad = new Administrator();
                ad.AdminName = this.AdminName;
                ad.AdminPwd = txbnewmima.Text.Trim();
                if (new AdministratorBLL().BllUpdata(ad) > 0)
                {
                    MessageBox.Show("修改成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.None);
                    this.Close();
                }
                else
                {
                    MessageBox.Show("修改失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.None);
                    txbyuanshimima.Text = "";
                    txbnewmima.Text = "";
                    txbok.Text = "";
                }
            }
        }
        }
    }过程或函数 '
报这个错小弟一直困惑GetByAdminName' 需要参数 '@AdminName',但未提供该参数。 this.AdminName  不是告诉他的值了吗?怎么还是出错呢?前辈们指点下。WinForm密码

解决方案 »

  1.   

    this.AdminName重来没有赋值。默认是null,传入到存储过程中肯定出错。
      

  2.   

    1樓已經說了,你的this.AdminName沒有賦值,你在Administrator admin = new AdministratorBLL().GetByAdminName(this.AdminName); 
    這句下斷點,自己看下this.AdminName的值是多少
      

  3.   

    你应该把相关的代码尽量发上来,比如GetByAdminName访问数据库这个实现
      

  4.   


    GetByAdminName
           public Administrator GetByAdminName(string adminName)
           {
               //先实例
               Administrator admin = new Administrator();
               //commandText命令文本
               string commandText = "GetByAdminName";
               SqlParameter[] commandParameters ={
                                                   new  SqlParameter("@AdminName",adminName)
                                                  };
               //ExecuteReader的read()方法,它就是读取一个表的记录,即执行读,每次调用都是返回一行的结果集
               //一般用在判断这行的结果集是否有效果,有的话就执行下面的操作。一句话:一般用于判断返回的结果。
               //CommandType.StoredProcedure  执行类型为 存储过程
               //commandParameters  存储过程中使用的参数
               //调用 SQLHelper 类中的 ExecuteReader方法 来执行 存储过程
               SqlDataReader dataReader = SQLHelper.ExecuteReader(SQLHelper.connectionString, CommandType.StoredProcedure, commandText, commandParameters);
               if (!dataReader.HasRows)//HasRows表示的是从数据库读出来的数据集dataReader中是否存在数据,它的作用是用来判断数据集是否为空,执行的结果为 true/false
               {
                   admin = null;
               }
               else
               {
                   if (dataReader.Read())
                   {
                       admin.AdminName = (string)dataReader["AdminName"];
                       admin.AdminPwd = (string)dataReader["AdminPwd"];
                       admin.EmployeeID = (int)dataReader["EmployeeID"];
                   }
               }
               dataReader.Close();
               return admin;
           }