2016-09-16 23 views
0

我有一個數據在我的數據庫'A Plus 18" Stand Fan'沒有單引號。我用nvarchar保存數據,但是當我嘗試從數據庫中檢索數據時,數據返回'A Plus 18\" Stand Fan'。我嘗試使用WebUtility.HtmlDecodeHtmlUtility.Html.DecodeWebUtility.UrlDecode。有人能幫我嗎?謝謝!從數據庫檢索特殊字符到C#

這裏是我的代碼,我從數據庫中讀取數據進行比較。 「模型」是一個我需要修復

for (int y = 0; y < dt.Rows.Count; y++) 
     { 
      model = dt.Rows[y]["ItemModel"].ToString(); 
      string companys = ""; 

      companys = dt.Rows[y]["Company"].ToString(); 



      //getAMS(model, quan); 
      Utility a = new Utility(); 
      string com = a.PO(); 
      SqlConnection con = new SqlConnection(com); 
      SqlCommand read = con.CreateCommand(); 
      SqlDataReader reader = null; 
      string stat = "Delivered"; 

      string mod = "SELECT SUM(Quantity) as Quantity from vConsumables_Balance where Model ='" + model + "' AND Company = '" + companys + "' AND Status = 'Delivered'"; 

      try 
      { 
       con.Open(); 
       read.CommandText = mod; 
       reader = read.ExecuteReader(); 
      } 
      catch (System.Exception) 
      { 
       Console.WriteLine("Error"); 
      } 

      while (reader.Read()) 
      { 

        quan = reader.GetDecimal(0).ToString(); 



      } 
+1

你應該更具體地說明你是如何得到這個字符串的。代碼片段將有所幫助。一般來說,C#字符串中的特殊字符會被轉義(前綴爲\)。報價是一個特殊的字符。因此它前面有一個反斜槓。 –

+1

你需要比較字符串嗎?因爲當你顯示字符串時,它們應該消失 –

+1

分享你的C#代碼和部分視圖/標記。 –

回答

1

的代碼行string mod = "SELECT SUM(Quantity) as Quantity from vConsumables_Balance where Model ='" + model + "' AND Company = '" + companys + "' AND Status = 'Delivered'";表明你是通過手動串聯字符串生成SQL查詢。我假設你在將數據插入數據庫時​​使用了相同的方法,並使用自己的某個工具來轉義某些字符。

這是一個壞主意。您應該將所有查詢更改爲參數化查詢。這可以幫助您解決您可能遇到的其他問題:格式化數字和日期,還可以防範SQL注入攻擊。

至於Status列,我建議使用表示枚舉值而不是字符串的整數值。

相關問題