我正在尝试创建一个简单的登录页面,用户输入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”的下拉列表的值时,它工作正常并进行验证。但是,当我也检查类型,即学生,管理员或讲师时,即使所有信息都是正确的,它总是会进行不成功的登录。任何人都可以帮我找到错误吗?
由于
答案 0 :(得分:0)
要检查的第一点是:
但是,优先使用enum / int来定义用户的角色而不是文本名称。
答案 1 :(得分:0)
尝试SqlDataReader类。如果发生读取,您可以捕获。 这是link。虽然不是这种情况,但我建议您在数据库中使用标量函数或使用EntityFramework或其他ORM工具。
答案 2 :(得分:0)
使用参数化查询可能会解决,你可以防止它像这样的风险
cmd1.Parameters.AddWithValue("@ID", idBox.Text);