0

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

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

这是我修复后的代码:

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

1 回答 1

4

假设Table是你的桌子的真实姓名试试这个

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

注意[]around Table,这是出于转义目的,因为Table它是保留字。

我同意现有的评论,即这不是构建 sql 查询的正确方法。您会受到SQL 注入攻击,并且从可读性的角度来看也更糟。您应该改用参数。

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

您还需要考虑两件事:

  • 转义用户输入以避免XSS 攻击
  • 将加密密码存储在数据库中,而不是纯文本
于 2013-03-10T18:43:30.823 回答