从数据库检索特殊字符到C#

时间:2016-09-16 03:26:26

标签: c# asp.net sql-server

我的数据库'A Plus 18" Stand Fan'中有一个没有单引号的数据。我使用nvarchar来保存数据,但是当我尝试从数据库中检索数据时,数据返回'A Plus 18\" Stand Fan'。我尝试使用WebUtility.HtmlDecodeHtmlUtility.Html.Decode WebUtility.UrlDecode。有人能帮我吗?谢谢!

这是我的代码,我从数据库中读取数据进行比较。 "模型"是我需要解决的问题

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 个答案:

答案 0 :(得分:1)

代码行string mod = "SELECT SUM(Quantity) as Quantity from vConsumables_Balance where Model ='" + model + "' AND Company = '" + companys + "' AND Status = 'Delivered'";表示您通过手动连接字符串来创建SQL查询。我假设你在将数据插入数据库并使用自己的某些工具来转义某些字符时也做了同样的事情。

这是一个坏主意。您应该将所有查询更改为参数化查询。这将帮助您解决可能遇到的其他问题:数字和日期的格式化,还可以提供一些防止SQL注入攻击的保护。

对于Status列,我建议使用表示枚举值而不是字符串的整数值。