我收到以下错误:
未处理的类型' System.IndexOutOfRangeException' 发生在System.Data.dll中附加信息:没有行 位置0。
我已粘贴了我的代码,但我无法理解为什么我收到此错误消息。
我知道这是一个非常基本的课程,但我只是在学习。 :)
SqlConnection con = new SqlConnection(@"Data Source=B70143272PC4;Initial Catalog=TestDB1;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("select employeeid,username, password from Employeeinfo where [UserName] = '" + textBox1+ "' and [Password] = '" +textBox2.Text+"'", con);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows[0][0].ToString() == "1")
{
this.Hide();
Form2 ff = new Form2();
ff.Show();
}
else
{
MessageBox.Show("Please check your Username and Passowrd");
}
答案 0 :(得分:1)
您错过了Text
的{{1}}属性。它应该是:
TextBox1
但您应始终使用parameterized queries来避免SQL Injection。像这样:
SqlDataAdapter sda = new SqlDataAdapter("select employeeid,username, password from Employeeinfo where [UserName] = '" + textBox1.Text+ "' and [Password] = '" +textBox2.Text+"'", con);
答案 1 :(得分:0)
另外,如果我理解正确并且你想检查数据表是否有任何结果,而不是if (dt.Rows[0][0].ToString() == "1")
使用if (dt.Rows.Count == 1)
Rows有一个count属性,可以告诉您集合中有多少行。