当前位置:编程学习 > C#/ASP.NET >>

winform窗体修改密码出错求前辈们指点

 
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 密码 --------------------编程问答-------------------- this.AdminName重来没有赋值。默认是null,传入到存储过程中肯定出错。 --------------------编程问答-------------------- 是不是this.AdminName.Text啊。 --------------------编程问答--------------------
引用 2 楼 antcy_18 的回复:
是不是this.AdminName.Text啊。
  不是的我试了。 --------------------编程问答--------------------
引用 1 楼 u011303459 的回复:
this.AdminName重来没有赋值。默认是null,传入到存储过程中肯定出错。
 你看出来了问题所在能在详细点吗? --------------------编程问答-------------------- 1樓已經說了,你的this.AdminName沒有賦值,你在
Administrator admin = new AdministratorBLL().GetByAdminName(this.AdminName); 

這句下斷點,自己看下this.AdminName的值是多少 --------------------编程问答-------------------- 你应该把相关的代码尽量发上来,比如GetByAdminName访问数据库这个实现 --------------------编程问答--------------------
引用 楼主 u011595268 的回复:
 
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  不是告诉他的值了吗?怎么还是出错呢?前辈们指点下。


引用 6 楼 hwenycocodq520 的回复:
你应该把相关的代码尽量发上来,比如GetByAdminName访问数据库这个实现

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;
       } --------------------编程问答-------------------- AdminName 在哪里赋值的 --------------------编程问答--------------------
引用 8 楼 hwenycocodq520 的回复:
AdminName 在哪里赋值的
 好像是没有赋值那么怎么赋值呢? --------------------编程问答--------------------
引用 9 楼 u011595268 的回复:
Quote: 引用 8 楼 hwenycocodq520 的回复:

AdminName 在哪里赋值的
 好像是没有赋值那么怎么赋值呢?

你程序中没有全局用户登录信息的数据么?

或者你窗体上有该用户名的字段么?有的话直接从它获取管理员姓名的值 --------------------编程问答-------------------- 这要看你存储过程怎么写的了 --------------------编程问答--------------------
引用 10 楼 hwenycocodq520 的回复:
Quote: 引用 9 楼 u011595268 的回复:

Quote: 引用 8 楼 hwenycocodq520 的回复:

AdminName 在哪里赋值的
 好像是没有赋值那么怎么赋值呢?

你程序中没有全局用户登录信息的数据么?

或者你窗体上有该用户名的字段么?有的话直接从它获取管理员姓名的值
  没有 你能写点代码给我看看吗? --------------------编程问答--------------------
引用 12 楼 u011595268 的回复:
Quote: 引用 10 楼 hwenycocodq520 的回复:

Quote: 引用 9 楼 u011595268 的回复:

Quote: 引用 8 楼 hwenycocodq520 的回复:

AdminName 在哪里赋值的
 好像是没有赋值那么怎么赋值呢?

你程序中没有全局用户登录信息的数据么?

或者你窗体上有该用户名的字段么?有的话直接从它获取管理员姓名的值
  没有 你能写点代码给我看看吗?
求指导下万分感谢
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,