数据读取器和没有数据时读取的无效尝试

时间:2014-03-05 22:05:41

标签: asp.net sqldatareader

这是我的代码:

protected void logujButton_Click(object sender, EventArgs e)
{
    string user = "data source=myHostServer; database = myDataBase; user id=myLogin; password=myPassword";
    SqlConnection con2 = new SqlConnection(user);
    con2.Open();

    string loguj = "select count(*) from uzytkownik where Login = '"+ logujTextBox.Text +"'";
    SqlCommand command = new SqlCommand(loguj, con2);
    int wartosc = Convert.ToInt32(command.ExecuteScalar().ToString());
    con2.Close();

    if (wartosc == 1)
    {
        con2.Open();
        SqlCommand pobierzHaslo = new SqlCommand("select Haslo from uzytkownik where Login = '" + logujTextBox.Text + "'", con2);
        SqlDataReader rdr = pobierzHaslo.ExecuteReader();
        string haslo = rdr["Haslo"].ToString();
        if (haslo == hasloTextBox.Text)
        {
            errorLabel.Text = "Prawidlowe Haslo !";
        }
        else
        {
            errorLabel.Text = "Zle haslo !";
        }
    }
    else 
    {
        errorLabel.Text = "Taki uzytkownik nie istnieje !";
    }
}

当我按下按钮时,出现此错误:“没有数据时无效尝试读取”。你能告诉我,我犯错了吗?谢谢你的建议!

2 个答案:

答案 0 :(得分:1)

你还没有从读者那里读到任何东西。你必须调用Read()方法:

 SqlDataReader rdr = pobierzHaslo.ExecuteReader();
 if (rdr.Read())
 {
        string haslo = rdr["Haslo"].ToString();
        ....
 }

答案 1 :(得分:0)

如果您有权访问SSMS,请直接在查询窗口中运行查询,并确保获取数据。您的查询可能不好。根据错误消息的文本,它很可能是来自SqlDataReader的ExecuteReader方法的错误。