for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i][0].ToString() == txtName.Text)
                {
                    //MessageBox.Show("登录成功");                    if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码
                    {
                        MessageBox.Show("登录成功");
                        frmMain main = new frmMain();
                        //main.power = power;
                        //main.Name = user;
                        main.Times = DateTime.Now.ToShortDateString();
                        main.Show();
                        this.Hide();
                        break;
                    }
                    else
                    {
                        MessageBox.Show("用户名或者密码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }                }验证密码这里总是错误求解~~

解决方案 »

  1.   

    if (dt.Rows[i][0].ToString() == txtName.Text)
     if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码
    你这数据库对象是如何定义的?
    最好你还是自己先调试一下代码,检查关键点上的内容。
      

  2.   

       if (dt.Rows[i][0].ToString() == txtName.Text)
                    {
    bool b=false;
     for (int j = 0; j < dt.Rows.Count; j++)
                {                  
                        if (dt.Rows[0][j].ToString() == txtPwd.Text)//验证密码
                        {
    b=true;
                            MessageBox.Show("登录成功");
                            frmMain main = new frmMain();
                            //main.power = power;
                            //main.Name = user;
                            main.Times = DateTime.Now.ToShortDateString();
                            main.Show();
                            this.Hide();
                            break;
                        }
                  }                if(!b)
                        {
                            MessageBox.Show("用户名或者密码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }
    }
      

  3.   

    if (dt.Rows[i][0].ToString() == txtName.Text)
    if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码你这两段代码 我是这样理解的  你数据库里面 每一行的第一列是用户名 第一行的某一列是密码,但不知道那一列是密码。
      

  4.   

    用DataTable 自带的过滤属性,要方便些。最后判断过滤后的行数,来验证登录。   
    dataSet.Tables[0].DefaultView.RowFilter = "F_UserName ='" + UserName + "' AND F_LoginPassword ='" + UserLogin + "'";
                if (dataSet.Tables[0].Rows.Count > 0)
                {
                    //登录验证成功
                }
                else
                {
                    //验证失败
                }
                    
      

  5.   

    如果不是我上面说的那种。 你数据库里面的 每一行对应有一个用户名和一个密码的话 那你的这段代码   if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码应该改成 if (dt.Rows[i][X].ToString() == txtPwd.Text)//验证密码X为你密码所在的列
      

  6.   

    你的这个for循环看的我都晕了,验证个用户名密码不用for循环吧,这个有点大题小做了吧
    如果非要用,那就写吧:
     for (int i = 0; i < dt.Rows.Count; i++)
                 {
                     if (dt.Rows[i][0].ToString() == txtName.Text.Trim())
                     {
                      if (dt.Rows[i][1].ToString() == txtPwd.Text.Trim())
                         {
                             MessageBox.Show("登录成功");
                             frmMain main = new frmMain();
                             main.Times = DateTime.Now.ToShortDateString();
                             main.Show();
                             this.Hide();
                             break;
                         }
                         else
                         {
                             MessageBox.Show("用户名或者密码错误,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                             return;
                         }
                    }
    上面这个大概就是你的逻辑了,不过对于用户登录来说,一般都是要过滤用户输入的特殊字符,以免SQL注入,再者一般密码和数据库存储之间都是通过加密算法比对的,还有,要是想做的安全性高点,用户输入的地方一般限制字符长度等等,希望对你有帮助...
      

  7.   

    string user = string.Empty;
                string pwd = string.Empty;
                DataTable dt = new DataTable();            DataRow[] drs = dt.Select(string.Format("User='{0}' AND PWD ='{1}'", user, pwd));
                if (drs.Length == 0)
                {
                    //Invalid
                }
                else
                {
                    //valid
                }
      

  8.   

    如果,就是验证用户名,和密码。用不着在写循环,
    DataRow[] rows = dt.Select(strWhere); // 从dt 中查询符合条件的记录;其中strWhere就是sql语句中where的部分
      

  9.   

                    if (dt.Rows[i][0].ToString() == txtName.Text)
                    {
                        //MessageBox.Show("登录成功");                    if (dt.Rows[0][i].ToString() == txtPwd.Text)//验证密码
      

  10.   


    dt.Rows[0][i].ToString(): lz应该理解这个意思,这里指的是取得数据第一行第多少列的数据来和密码进行对比。如果你的  密码列是在第三列 可以这样写:
    if(dt.Rows[0][2].ToString()== txtPwd.Text){.....}