我有一个来自数据库的登录网站。
这是我的代码:
protected void SignIn_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=MICROSOF-58B8A5\\SQL_SERVER_R2;Initial Catalog=Movie;Integrated Security=True");
con.Open();
string cmdStr = "select count(*) from Users";
cmdStr += "where Username='" + UsernameSignIn.Text + "'";
cmdStr+= "AND Password='"+PasswordSignIn.Text+"'";
SqlCommand cmd = new SqlCommand(cmdStr, con);
int i = Convert.ToInt16(cmd.ExecuteScalar());
if (i == 0)
{
ErrorSignIn.Text = "Sorry, Wrong Username or Password";
}
else
{
Response.Redirect("HomeAfter.aspx");
}
}
出于某种原因,我遇到了一个错误:
' - '
附近的语法不正确
。
(对于这一行:int i = Convert.ToInt16(cmd.ExecuteScalar());
)
谢谢,
答案 0 :(得分:2)
没有间距。您的查询如下所示:
从Userswhere Username ='...'AND Password ='...'
中选择count(*)添加空格,如下:
string cmdStr = "select count(*) from Users";
cmdStr += " where Username='" + UsernameSignIn.Text + "'";
cmdStr+= " AND Password='"+PasswordSignIn.Text+"'";
答案 1 :(得分:1)
除了作为一种身份验证形式特别粗糙的事实(你真的应该考虑使用内置的ASP.NET成员资格提供程序)之外,你至少应该使用参数化的SQL查询,而不是连接纯文本以创建SQL语句。此外,我注意到您的“登录”安排只是对HomeAfter.aspx页面执行response.redirect,而不存储任何要重复使用的内容,表明用户已经成功登录,例如cookie或sesssion变量。
这一切有什么特别的原因,还是因为你刚刚开始,你需要学习一点?