2011-12-16 227 views
0

我有一个网站与登录,从数据库。asp.net登录从数据库网站

这是我的代码:

 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());

谢谢,

回答

2

没有间距。您的查询看起来是这样的:

SELECT COUNT(*)从Userswhere用户名= '... '和密码=' ...'

添加空格,就像这样:

string cmdStr = "select count(*) from Users"; 
cmdStr += " where Username='" + UsernameSignIn.Text + "'"; 
cmdStr+= " AND Password='"+PasswordSignIn.Text+"'"; 
1

除了从事实上这是一种认证形式(你真的应该考虑使用内置的ASP.NET成员资格提供者)这一事实,你至少应该使用参数化SQL查询,而不是将纯文本连接到创建你的SQL语句。另外,我注意到你的“登录”安排只是简单地做一个response.redirect到HomeAfter.aspx页面而不存储任何要重用的指示用户已经成功登录的东西,比如一个cookie或一个sesssion变量。

是否有任何特殊的原因,或者是因为你刚刚开始,你需要研究一下?