2012-08-23 117 views

回答

6

如果use properly parameterized statements,你应该不需要担心。事情是这样的(不过请不要向我学习C#技术):

string sql = @"UPDATE dbo.table SET col = @p1 WHERE ...;"; 
string myString = @"hello'foo""bar"; 

SqlCommand cmd = new SqlCommand(sql, conn); 
cmd.CommandType = CommandType.Text; 
SqlParameter p1 = cmd.Parameters.AddWithValue("@p1", myString); 
cmd.ExecuteNonQuery(); 

(虽然你真的应该使用存储过程)

如果您手动构建字符串(你真的,真的,真的不应该这样做),你需要他们,加倍逃避字符串分隔符:

INSERT dbo.tbl(col) VALUES('hello''foo"bar'); 
+0

你可以告诉我一个小例子吗? –

+0

我的问题是引号表示单个或双.. –

+0

只有单引号(''')是SQL Server端的问题。 –

3

使用参数化查询 - 再报价不物质根本没有。另外 - 你的数据库不会被SQL注入接管 - 所以赢/赢是真的。

0

您可以加倍报价:

INSERT INTO table 
VALUES ('Future Swami Vivekananda''s grand father''s name was "____"') 
+0

它的客户端输入,所以我想如何以这种方式管理它? –

+0

Rick - 在形成插入语句之前,您应该能够用两个单引号替换用户输入中的(单引号)。但是,真的,您应该重构代码以使用参数化查询(如Aaron所建议的)或使用存储过程。 –

相关问题