错误语法不正确

时间:2010-12-07 13:28:07

标签: c# asp.net

我有注册表单,我在这个表单中有用户名的文本框,当我测试网页表单时,我在文本框用户名(Kaz'em)中添加了这个用户,我有这个错误

('em'附近的语法不正确。 字符串''后面的未闭合引号。)

public bool RegisteredUser()
{
    bool Return = false;
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ElarabyGroup"].ConnectionString);
    SqlCommand cmd = new SqlCommand("Select Count(UserName) From [Registeration] Where [Registeration].UserName = '" + RegisteredUserName + "'", con);
    con.Open();
    if (int.Parse(cmd.ExecuteScalar().ToString()) > 0)
        Return = true;
    con.Close();
    return Return;
}

3 个答案:

答案 0 :(得分:5)

那是因为您直接在SQL中包含用户提供的数据。

不要那样做。

使用parameterized query代替,将文本框中的值设置为参数值之一。这样,您可以使查询的“数据”部分远离查询的“代码”部分。

你很幸运,这只是一个语法错误,而不是little Bobby tables ...

答案 1 :(得分:0)

您接触到SQL注入攻击,它可能会像任何事情一样受到伤害。

尝试Mr.Skeet建议的方法

答案 2 :(得分:0)

我会和Jon一起去,但你也可以尝试select * from [Table] where [ColumnName]= N'Kaz'em'

这意味着它也会寻找特殊字符。