簡體   English   中英

C#,替換查詢中的特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM