代码为:
            string username = string.Empty, password = string.Empty;
            OleDbCommand comm = new OleDbCommand("select * from tbUser where userName='"
                + txtUser.Text + "'", da.link());//先检索用户名
            OleDbDataReader drd = comm.ExecuteReader();//执行检索,返回SqlDataReader对象
            drd.Read();
            username = drd.GetValue(1).ToString();//获得用户名称
            password = drd.GetValue(2).ToString();//获得用户密码当输入的正确的用户名时运行正常,但是当输入不正确的用户名时,(正常的话应该显示“用户名不正确”),
结果提示 username = drd.GetValue(1).ToString()出问题,查看错误,显示“不存在此行/列的数据”
请高手帮忙给与解决

解决方案 »

  1.   

    你应该做个判断,drd.Read不一定会成功,也可能select语句查找不到任何记录满足你的条件,这样drd就不会有数据,应该这样:if (drd.Read())
    {
      username = drd.GetValue(1).ToString();//获得用户名称
       password = drd.GetValue(2).ToString();//获得用户密码
    }
    else
    {
        MessageBox.Show("用户名不存在");
    }
      

  2.   


    if ( drd.HasRows ) 
    {
      drd.Read()
      username = drd.GetValue(1).ToString();//获得用户名称
      password = drd.GetValue(2).ToString();//获得用户密码

    else 
    {
    MessageBox.Show("用户名不存在或者密码错误");
    }
     OleDbCommand comm = new OleDbCommand("select * from tbUser where userName='"
      + txtUser.Text + "'", da.link()); 这里不要单独检索用户名了 用户名 + 密码一起检索 当然如果你需要提示用户名存在不存在就单独检索用户名也可以用 drd.HasRows这样只需要一次连接数据库就可以处理完登陆.