登录和密码程序

时间:2016-04-18 19:12:51

标签: c# sql-server database login passwords

我收到以下错误:

  

未处理的类型' 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");
}

2 个答案:

答案 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属性,可以告诉您集合中有多少行。