转义SQL查询中的字符

时间:2013-04-10 16:36:49

标签: .net sql database escaping

我正在尝试使用此查询更新数据库:

string query = "UPDATE pagine SET titolo= '" + pa.titolo + @"', contenuto = '" + pa.contenuto + @"' WHERE id= " + pa.id;

我无法让它发挥作用。有关详细信息,请访问Updating an mdb database table

问题可能是我在标题和内容中有一些撇号。 我尝试使用Regex.Escape但它只是在内容中添加了大量的\\\。

有没有办法逃脱ASP.NET中的'和'字符?

注意:因为我是意大利人,我使用意大利语名称作为变量,但我在昨天发布的另一个问题中将其翻译为更清晰。

3 个答案:

答案 0 :(得分:4)

我的建议是使用SqlCommand对象SqlParameter来避免所有连接和转义字符大惊小怪。他们会自动为您处理所有这些。此外,它们还可以帮助您免受SQL注入攻击。

如果您有选项,我建议您使用类型化DataSet方法并为自己创建一个Typed Query。然后,您可以将其称为代码中的常规.NET函数。

答案 1 :(得分:0)

SQLParameter更安全,因为您不能忘记清理文本 你可以逃避文本。

string userText = @"you realy shouldn't do this";

string sqlSafeText = sqlSafeText.Replace(@"'", @"''");

答案 2 :(得分:0)

在C#中 你可以像下面那样逃离" - > " to \"

"ABELE\"o\""

您可以使用以下'

之类的单引号' to ''
"ABELE''o"