我有一个包含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
中附加信息:没有数据时读取的尝试无效。
答案 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();