[英]C#, replacing special character in query
我在數據庫中有一條記錄,其中包含特殊字符,例如&,'
(撇號)。
記錄看起來像這樣.. stack'overflow
。
在我的查詢中,我這樣寫。
where name = ' " +name+ " ' ";
假設名稱為stack'overflow
那么它給了我一個語法錯誤。
怎么解決呢?
我正在使用C#
您的問題尚不清楚,但是答案幾乎肯定是不會在SQL語句中包含數據。 而是使用參數化查詢,因此您無需擔心自己執行任何轉義等操作。
作為示例,請查看SqlCommand.Parameters文檔-但要注意,不同的數據庫提供程序使用不同的參數方法(例如,命名方法與位置方法)。
不要在查詢中附加文字。 在Google中搜索SQL注入。 這是一個大問題,您不應該這樣做。 您可能會使您的應用程序容易受到嚴重攻擊。
一種解決方案是在查詢中使用SQL參數。 在此處查看更多信息: 在命令中添加參數
使用參數化查詢 。 他們將為您處理特殊字符的轉義,並有助於防御SQL注入攻擊。 它們還為SQL Server提供了更好的機制來緩存執行路徑以提高性能。
永遠,永遠, 永遠使用串聯SQL。
更好的方法是使用參數化查詢。 如果事先未正確地對數據進行語法處理,則用於SQL的字符串構建可能非常危險。
嘗試這樣的事情:
string query = "SELECT * FROM myTable WHERE name = @p_name";
SqlCommand cmd = new SqlCommand(query, sqlConnection);
cmd.Parameters.AddWithValue("@p_name",yourTextItem);
針對您的情況進行了更新:
string myName = TextBox1.Text;
string query = "SELECT * FROM myTable WHERE name LIKE %@p_name%";
SqlCommand cmd = new SqlCommand(query, sqlConnection);
cmd.Parameters.AddWithValue("@p_name",myName);
您需要使用參數。
有關更多信息,請查閱文檔以了解所使用的內容。
在傳入之前在名稱變量中用"''"
替換"'"
,您應該可以。
編輯:
是的,這只是一個臨時解決方案。 要永久解決您的問題,請使用參數化查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.