尝试在C#中添加反斜杠作为MySql insert语句的转义

时间:2017-07-08 10:17:21

标签: c# mysql

我正在导入Excel电子表格以便插入MySql数据库。这是电子表格中的一条记录:

Loc     Item                 Description
FAB12   0121G00667PDG   PNL  DUCT 27.5"

我正在使用OleDbDataReader来获取DataTable,这是有效的。我遇到的问题是尝试用"替换\"以便MySql接受双引号。我想让C#将27.5"更改为27.5\"

感谢您提供的任何帮助。

这是我现在得到的结果:

INSERT INTO test_table2 (Loc, Item, Description) VALUES ("FAB12  
 ","0121G00667PDG","PNL  DUCT 27.5"")

以下是代码:

           for (int i = 0; i < dtSheet.Rows.Count; i++)
        {
            DataRow dr = dtSheet.Rows[i];
            for (int j = 0; j < dtSheet.Columns.Count; j++)
            {
                DataColumn dc = dtSheet.Columns[j];
                if (dr[j].ToString().Contains("\""))
                {
                    Console.WriteLine(dr[j].ToString());
                    dr[j].ToString().Replace("\"", "\\\""); 
                  //need the backslash for mysql to escape " 
                  //so trying to get "PNL  DUCT 27.5\""
                    Console.WriteLine(dr[j].ToString());
                }

这是Majid的解决方案。使用预准备语句允许将双引号插入到MySql中      尝试             {                 conn.Open();                 cmd.Connection = conn;

            cmd.CommandText = "INSERT INTO test_table2 (Loc, Item, Description) VALUES( @Loc, @Item, @Desc )";
            cmd.Prepare();

            cmd.Parameters.AddWithValue("@Loc", "Loc");
            cmd.Parameters.AddWithValue("@Item", "Item");
            cmd.Parameters.AddWithValue("@Desc", "Desc");

            foreach (DataRow row in dtSheet.Rows)
            {
                cmd.Parameters["@Loc"].Value = row[0];
                cmd.Parameters["@Item"].Value = row[1];
                cmd.Parameters["@Desc"].Value = row[2];
                Console.WriteLine(cmd.ToString());

                cmd.ExecuteNonQuery();
            }
        }

2 个答案:

答案 0 :(得分:0)

尝试使用:

Math.random

答案 1 :(得分:0)

使用参数或此value.Replace("\\","\\\\")