防止转义字符串c#



我有一个sql查询,它使用变量中的"where"显示字段。我有一个函数传递的变量

stringempCode,其值为">!\\(">

这是我的代码:

public List<int> GetSuccessAndFailedCountForTodayForAgent(string empCode)
{
var result = new List<int>();
string query = "SELECT (SELECT COUNT(*) FROM BusinessTransactions WHERE STATUS='Failed' AND ENTEREDDATE='" + DateTime.Now.Date.ToShortDateString() + "' AND AgentEmployeeCode='" + empCode + "') AS FAILED_COUNT, (SELECT COUNT(*) FROM BusinessTransactions WHERE STATUS='Completed' AND ENTEREDDATE='" + DateTime.Now.Date.ToShortDateString() + "' AND AgentEmployeeCode='" + empCode  + "') AS SUCCESS_COUNT";
using (SqlConnection conn = new SqlConnection(asynchPaymentDBConnectionString))
{
conn.Open();
using (SqlCommand s = new SqlCommand(query, conn))
{
using (SqlDataReader reader = s.ExecuteReader())
{
try
{
if (reader.HasRows)
{
while (reader.Read())
{
result.Add(reader.GetInt32(0));
result.Add(reader.GetInt32(1));
}
}
}
catch (Exception ex)
{
//do something
}
}
}
}
return result;
}

在我的C#中,结果变成了0-0,当我尝试直接使用sql server时,它会显示2-0 的结果

字符串\\(被视为!\(

如何使用我的字符串\\(到我的where子句?

编辑:

我尝试使用参数添加:

s.Parameters.Add("@EmployeeCode", SqlDbType.NVarChar, 16);
s.Parameters["@EmployeeCode"].Value = empCode;

仍然不起作用

要对C#字符串中的反斜杠进行转义,可以使用双反斜杠,也可以在整个字符串前面加上@,这将按字面处理字符串并转义所有字符。

@"foo!(bar"

将生成字符串

foo!(bar 

只有在将字符串分配给变量时才能执行此操作,不能在变量前面加@。

最新更新