2015-04-30 35 views
1

我在我的csharp代碼中有一個場景,我試圖用特殊字符/和使用sql查詢得到記錄。csharp使用帶特殊字符的sql查詢

我試着在sql查詢分析器中執行查詢,並且在添加方括號後它工作正常。

Select * from tblDetails where name like '%[\]%' or name like '%[%]%' 

但它失敗時,我用它在CSHARP

string sqlQuery = "Select * from tblDetails where name like '%[/]%' or name like '%[%]%' "; 
using (SqlCommand command = new SqlCommand(strQuery, strConnection)) 
+0

失敗如何?你有錯誤嗎?什麼是錯誤信息?嘗試使用Profiler來查看C#程序發送的SQL命令。 –

+0

你的代碼應該可以工作。你得到的錯誤是什麼? –

+0

我甚至不能在SQL Management Studio中運行這個SQL查詢。你確定你沒有錯過這裏的單引號嗎?或者名字像%[%]%「? – RedOctober

回答

1

以下代碼適用於我:

using (SqlConnection conn = new SqlConnection()) 
{ 
    conn.ConnectionString = "Integrated Security=true;Initial Catalog=xyz;server=abc"; 
    string sqlQuery = "Select * from myTable where name like '%[\\]%' or name like '%[%]%'"; 
    conn.Open(); 
    using (SqlCommand command = new SqlCommand(sqlQuery, conn)) 
    { 
     var result = command.ExecuteReader(); 
    } 
} 
1

試試這個

string sqlQuery = @"Select * from tblDetails where name like '%[\]%' or name like '%[%]%' "; 

@ - 運算符中的字符串忽略特殊字符

編輯:那麼現在這個解決方案將工作得很好

+1

@忽略*控制字符*,不是特殊字符,不幸的是這不起作用。 –

+0

爲什麼這不能工作? – RedOctober

+1

因爲@不會忽略諸如/或%之類的東西,但它可以將字面值複製到像\ n或\ t之類的字符串中。將@符號添加到上面的字符串不會執行任何操作,因爲它中沒有控制字符。 –