[英]prevent escape string c#
我有我的 sql 查詢,它使用變量中的“where”顯示字段。 我有我的變量從一個函數傳遞
字符串empCode 其值為 " !\\\\( "
這是我的代碼:
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# 字符串中轉義反斜杠,您可以使用雙反斜杠或在整個字符串前面加上 @ 前綴,這將按字面意思處理字符串並轉義所有字符。
IE
@"foo!\(bar"
將產生字符串
foo!\(bar
編輯:您只能在將字符串分配給變量時執行此操作,不能使用 @ 為變量添加前綴。
希望有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.