簡體   English   中英

防止轉義字符串c#

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

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