You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中MySqlCommand.Parameters.Add给CommandText加转义斜杠报错问题

问题原因与解决方案

报错核心诱因

你看到的额外转义斜杠就是报错的直接原因,根本问题是你完全用错了MySQL参数化查询的逻辑:

  • 参数化查询的设计逻辑是SQL语句本身作为MySqlCommand的第一个构造参数传入,只有可变的字段值用占位符代替,而你把整个拼接完成的SQL语句当成了参数值传给命令对象,MySQL驱动会自动对字符串参数内的所有单引号做转义处理,最终执行的SQL就变成了INSERT INTO testtable (testcol) VALUES (\'testvalue\'),自然触发语法错误。
  • 你之前手动拼接SQL字符串的写法本身就存在SQL注入风险,完全违背了参数化查询的设计目的。
  • 使用AddWithValue报错的原因和上面一致:你把整个SQL作为参数传入时,AddWithValue自动推断参数类型出错,就会抛出格式异常。

正确实现代码

// 1. 编写带参数占位符的SQL语句,不要自行拼接字段值
string insertSql = "INSERT INTO testtable (testcol) VALUES (@testColVal);";
string testParam = "testvalue";
string connString = "server = localhost; database = xxxxx; User = xxxxx; Password = xxxxx; port = 3306";

// 连接对象也用using包裹自动释放资源
using (MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
    using (MySqlCommand cmd = new MySqlCommand(insertSql, conn))
    {
        // 仅把可变的字段值作为参数传入,驱动会自动处理转义,无SQL注入风险
        cmd.Parameters.Add("@testColVal", MySqlDbType.Text).Value = testParam;
        cmd.ExecuteNonQuery();
    }
}

内容的提问来源于stack exchange,提问作者ADBF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:24:04