关键字“表”附近的语法错误

时间:2013-03-10 18:38:31

标签: c# asp.net sql sql-server

我已经搜索过这个错误了,我想出了这个:

“我应该使用单引号将我的代码中的用户名和密码包围起来”......我做了但代码仍显示相同的错误!

以下是修复后的代码:

String strng = " SELECT * FROM Table "
        + " WHERE Username = '" + txtUsername.Text + "' AND " 
        + " Password = '" + txtPassword.Text + "'";

1 个答案:

答案 0 :(得分:4)

假设Table是您的表的真实姓名,请尝试此

String strng = " SELECT * FROM [Table] "
    + " WHERE Username = '" + txtUsername.Text + "' AND " 
    + " Password = '" + txtPassword.Text + "'";

请注意[]周围的Table,这是为了逃避目的,因为Table是保留字。

我同意现有的评论,这不是构建SQL查询的正确方法。您接触SQL Injection攻击并且从可读性的角度来看也更糟。你应该使用参数。

String strng = @" 
    SELECT * FROM [Table]
    WHERE Username = @UserName AND
    Password = @Password";
...
command.Parameters.AddWithValue("@UserName", txtUsername.Text);
command.Parameters.AddWithValue("@Password", txtPassword.Text);

还有两件事需要考虑:

  • 转义用户输入以避免XSS attack
  • 将加密密码存储在数据库而非纯文本