在SQL查询中需要转义的字符有哪些?

3

插入字符串时需要检查和转义哪些字符?

INSERT INTO gamedata (gamename, url, dlink) 
VALUES ('mady's run', 'http://www.sdfa.com', 'http://extabit.com/sdf')</code>

如何转义这些字符?
我正在使用C#,并使用SQL Server Management Studio 2008管理数据库。


4
使用参数而不需要转义字符怎么样? - Arash Milani
请查看这个链接以获取一个很好的例子。此外,网上还有许多示例。 http://stackoverflow.com/questions/1170676/storing-the-url-in-sqlserver-2005-using-c-sharp-codedata-sets - MethodMan
1个回答

22
不要对它们进行转义。在你的SQL中根本不包含这些值。而是使用参数化SQL并直接为参数提供值。无需转义、引用或转换,也没有SQL注入攻击的风险。
请参阅SqlCommand.Parameters文档获取示例。
应该将此方法应用于所有值,而不仅仅是那些可能具有“特殊”字符的值。这将代码(SQL)与数据(值)分离,避免SQL注入攻击,并避免不必要的转换(如果您不小心,这可能会对日期/时间值和数字造成问题)。

我已经了解了参数,但还没有使用过。谢谢大家。我将把它放入我的代码中。 - Kaushik DB
@KaushikDB 在你处理这个的时候,你应该看看LINQ。特别是因为它会自动将你的SQL查询参数化。 - Kittoes0124
我已经使用了sqlcommand.parameters,它非常好用。谢谢大家。@kittoes 我也会去看看LINQ。谢谢。 - Kaushik DB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接