2013-04-10 58 views
1

字符我试图用这个查询来更新数据库:逃生在SQL查询

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

我不能让它工作。更多详细信息请参见Updating an mdb database table

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

有没有办法在ASP.NET逃脱只是“和”字

注:因为我是意大利人,我使用意大利名字变量,但我翻译他们在其他问题更好的清晰度发布昨天

+4

这是不正确的方法 - 阅读起来在[SQL注入]上(http://en.wikipedia.org/wiki/SQL_injection)。使用参数,它会让你的生活变得更简单... – PinnyM 2013-04-10 16:38:56

+1

这与你的[上一个问题](http://stackoverflow.com/questions/15906455/updating-an-mdb-database-table)有什么不同? – 2013-04-10 16:41:40

回答

4

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

如果你有选择,我建议你去打字D ataSet方法并为您自己创建一个类型化查询。然后,您可以在代码中将其作为常规的.NET函数调用。

0

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

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

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

在C# 可以躲过"像下面 - >" to \"

"ABELE\"o\"" 

可以亚太经社会单引号'像下面' to ''

"ABELE''o"