登录页面 - 检查数据库

时间:2013-05-14 08:01:21

标签: c# asp.net sql database

我正在尝试创建一个简单的登录页面,用户输入ID和密码,并从下拉列表中选择角色:学生,管理员或讲师。这是代码:

protected void loginButton_Click(object sender, EventArgs e)
{

    SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=University;Integrated Security=True;Pooling=False";
    //myConn.Open();
    //string strqry = "Insert into students values (" + TextBox1.Text +
    //",'" + TextBox2.Text + "','" + TextBox3.Text + "')";
    //SqlCommand myCom = new SqlCommand(strqry, myConn);
    //int numrow = myCom.ExecuteNonQuery();
    //myConn.Close();

    Int32 verify;
    string query1 = "Select count(*) from Login where ID='" + idBox.Text + "' and Password='" + passwordBox.Text + "' and Type='"+ LoginAs.Text +"'" ;
    SqlCommand cmd1 = new SqlCommand(query1, con);
    con.Open();
    verify = Convert.ToInt32(cmd1.ExecuteScalar());
    con.Close();
    if (verify > 0)
    {
        Response.Redirect("succesful.aspx");
    }
    else
    {
        Response.Redirect("unsuccesful.aspx",true);
    }

}

问题是,当我尝试不检查名为“LoginAs”的下拉列表的值时,它工作正常并进行验证。但是,当我也检查类型,即学生,管理员或讲师时,即使所有信息都是正确的,它总是会进行不成功的登录。任何人都可以帮我找到错误吗?

由于

3 个答案:

答案 0 :(得分:0)

要检查的第一点是:

  1. 所有字母应该具有相同的大小写。
  2. 应在数据库和应用程序中截断该角色
  3. 但是,优先使用enum / int来定义用户的角色而不是文本名称。

答案 1 :(得分:0)

尝试SqlDataReader类。如果发生读取,您可以捕获。 这是link。虽然不是这种情况,但我建议您在数据库中使用标量函数或使用EntityFramework或其他ORM工具。

答案 2 :(得分:0)

使用参数化查询可能会解决,你可以防止它像这样的风险

cmd1.Parameters.AddWithValue("@ID", idBox.Text);