2015-04-30 33 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之类的字符串中。将@符号添加到上面的字符串不会执行任何操作,因为它中没有控制字符。 –