SqlConnection yy = new SqlConnection();
            yy.ConnectionString = "server=.;database=888;uid=sa;pwd=123";
            yy.Open();
            SqlCommand nn = new SqlCommand();
            nn.Connection = yy;
            nn.CommandText = "select * from users where name=@name";
            nn.Parameters.Add(new SqlParameter("@name", textBox1.Text));
            SqlDataReader rr = nn.ExecuteReader();
            if (rr.Read())
            {
                if (rr[2].ToString() == textBox2.Text)
                {
                    Form2 ff = new Form2();
                    ff.Show();
                }
                else
                {
                    MessageBox.Show("密码错误,请重新输入!");
                    textBox2.Text = "";
                }
            }
            else
            {
                MessageBox.Show("用户名不存在!请重新输入!");
                textBox1.Text = "";
                textBox2.Text = "";
            }数据库我设计的第一项是用户名~~第二项是性别~~第三项是密码~~为啥连接是总是提示密码错误啊???
还有  if (rr[2].ToString() == textBox2.Text)
rr[2]中得2可不可以用参数表示??
如果可以,怎么用??是跟数据库表里的东西有关吗??

解决方案 »

  1.   

    你下断点跟一下rr[2].ToString() 和textBox2.Text的值
    就知道为什么总提示密码错误
      

  2.   

    单步调试一下就知道为什么了;
    再者:你可以这样写:
                nn.CommandText = "select * from users where name=@name and password=@pwd"; 
    传入name参数和password参数,这样直接判断返回的结果是否有记录就可以了(name不能重复)
      

  3.   

    单步调试一下就知道为什么了;
    再者:你可以这样写:
                nn.CommandText = "select * from users where name=@name and password=@pwd"; 
    传入name参数和password参数,这样直接判断返回的结果是否有记录就可以了(name不能重复)
      

  4.   

    单步调试一下就知道为什么了;
    再者:你可以这样写:
                nn.CommandText = "select * from users where name=@name and password=@pwd"; 
    传入name参数和password参数,这样直接判断返回的结果是否有记录就可以了(name不能重复)
      

  5.   

    你的SQL语名最好改成  select name,sex,password from users where name = @name
    用sqldatareader读时,写成rr["name"],rr["sex"],rr["password"]