2013-04-10 61 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"