选择密码字段并按标准在文本框中显示

时间:2017-03-15 17:34:38

标签: c# sql

我有一个包含4个文本框字段的窗体:用户名,问题,出生日期和密码。

如果输入的信息正确(用户名,问题和dateOfBirth文本框)并按下确定按钮,我想从数据库表中加载并显示密码。

        SqlConnection myConn = new SqlConnection(myConnection);
        SqlCommand SelectCommand = new SqlCommand("select PassWord from dbo.Admin where UserName = '" + this.UserName.Text + "' and Question= '" + this.Question.Text + "' and DateOfBirth= '" + this.DateOfBirth.Text + "';", myConn);
        SqlDataReader myReader;
        myConn.Open();
        myReader = SelectCommand.ExecuteReader();
        PassShow.Text = myReader["PassWord"].ToString();
        myConn.Close();

我使用VS 2015,用来自VS的db。在c#中写这个。

调试时出现此错误: 类型为' System.InvalidOperationException'的未处理异常发生在System.Data.dll

附加信息:没有数据时读取的尝试无效。

2 个答案:

答案 0 :(得分:0)

如果您只想返回一行和一列,请改用:

PassShow.Text = SelectCommand.ExecuteScalar()?.ToString();

否则你必须先检查读者是否有任何结果行,然后才能保存:

using (SqlDataReader myReader = SelectCommand.ExecuteReader())
{
    if (myReader.HasRows && myReader.Read())
        PassShow.Text = myReader.GetString("PassWord");
}

答案 1 :(得分:0)

这对我很有用:

        myReader = SelectCommand.ExecuteReader();

        if (myReader.HasRows && myReader.Read())
        {
            PassShow.Text = (myReader["PassWord"].ToString());
        }
        myConn.Close();