2017-03-15 33 views
0

我有一个窗体,其中包含4个文本框:用户名,问题,出生日期和密码。选择密码字段并按条件在文本框中显示它

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

 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中用VS编写这个数据库。

我有这样的错误,当我调试它: “System.InvalidOperationException”类型的未处理的异常出现在system.data.dll

其他信息:无效的尝试时不存在数据读取。

+0

请不要在存储明文密码。 – faester

回答

0

如果只想返回一行和一列,而不是使用:

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

否则你要检查如果读者有任何结果行,然后才能savely访问它们:

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

谢谢。这很好。 – BlackStock

+0

不客气。 – DeveloperExceptionError

0

这完美的工作对我来说:

 myReader = SelectCommand.ExecuteReader(); 

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