2012-08-23 158 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所建議的)或使用存儲過程。 –

相關問題