如何正确地转义C#字符串以便在MySQL中使用"其中Like"

时间:2015-09-17 16:50:21

标签: c# mysql string

我的任务是使用"在类似的"中搜索MySQL数据库。在存储过程中。我的where子句作为参数传递给MySQL。

QA创建了一个名为" Fak& n& "帐户/ \家居&#34 ;.使用较短的字符串直到斜杠工作正常。一旦在搜索中使用反斜杠,它就不起作用。

我没有问题地逃过单引号。

除了" \"我已成功逃脱了所有事情。 在VS2012的调试中,我看到我的字符串变量为string name1 = name.Replace(@"\", @"\\"); yields "Fak'n & \" account/\\\\home" 此时我尚未处理单引号。此外,C#已经做了一些逃避。

试验我发现我需要5个反斜杠让MySQL在同样的声明中对它感到满意。我似乎无法让C#接受奇数的斜线。

        public DataTable findAllLookup(string name, int sortOrder = 1)
        {
            string whereVal = "";
            if (name.Length > 0)
            {
                //Don't let apostrophy's through you
               string name1 = name.Replace(@"\", @"\\");
               string name2 = name1.Replace("'", @"\'");
                whereVal = whereVal + " and CustNam like '%" + name2 + "%'";
            }

            DataTable dt = new DataTable();
            MySqlConnection conn = new MySqlConnection();
            conn.ConnectionString = ConnectionString;
            conn.Open();

            MySqlDataAdapter da = new MySqlDataAdapter("sp_a1cust_list_lookup_custom", conn);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.Add(new MySqlParameter("pmCompany", Company));
            da.SelectCommand.Parameters.Add(new MySqlParameter("pmWhereVal", whereVal));
            da.SelectCommand.Parameters.Add(new MySqlParameter("pmSort", sortOrder));

            DataSet ds = new DataSet();
            da.Fill(ds, "a1cust");
            dt = ds.Tables["a1cust"];

            return dt;
        }

我尝试了替换功能中我能想到的每一个变化。我甚至手动插入一个反斜杠但是自动转义然后我有6个反斜杠。这是我停下来的功能。

{{1}}

非常感谢任何帮助。

0 个答案:

没有答案