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

C# WinForm含78个单选按钮的问卷MySQL INSERT/UPDATE语法问题

解决MySQL INSERT ... ON DUPLICATE KEY UPDATE语法错误及优化建议

先直接点出你遇到的核心问题:你的ON DUPLICATE KEY UPDATE子句后面是空的,MySQL解析到这里时找不到要执行的更新逻辑,这就是抛出"Error in SQL syntax near '' at line 1"的直接原因。

接下来我们一步步修复问题,同时解决代码里的其他隐患:

1. 必须明确指定INSERT的列名

你当前的INSERT语句没有列出目标列,这非常危险:如果表的列顺序变化、新增/删除列,语句会直接失败,而且可读性极差。一定要写出要插入的列名,和VALUES里的顺序严格一一对应。

2. 完善ON DUPLICATE KEY UPDATE逻辑

既然要支持更新操作,你需要在这个子句里明确写出每个列要更新的值。比如当主键/唯一键重复时,把其他列更新为当前提交的最新值。

3. 替换字符串拼接,使用参数化查询

直接把控件文本拼到SQL里,不仅容易因为用户输入的单引号等特殊字符破坏语法,还存在严重的SQL注入风险。改用参数化查询是操作数据库的最佳实践。

修复后的完整代码示例

using (MySqlConnection conn = new MySqlConnection("你的数据库连接字符串"))
{
    conn.Open();
    // 替换为你的azt_image表真实列名,这里是根据VALUES顺序推测的名称
    string sql = @"INSERT INTO central_db.azt_image 
                  (serial, cust_dfe, eng_img, serial_dup, asset_loc, asset_name, 
                   img_l1_pend, img_l2_pend, img_l3_pend, img_l4_pend, img_l5_pend, img_l6_pend, img_l7_pend, img_l8_pend, img_l9_pend, img_l10_pend,
                   img_l11_pend, img_l12_pend, img_l13_pend, img_l14_pend, img_l15_pend, img_l16_pend, img_l17_pend, img_l18_pend, img_l19_pend, img_l20_pend,
                   img_l21_pend, img_l22_pend, img_l23_pend, img_l24_pend, img_l25_pend, img_l26_pend,
                   img_l1_na, img_l2_na, img_l3_na, img_l4_na, img_l5_na, img_l6_na, img_l7_na, img_l8_na, img_l9_na, img_l10_na,
                   img_l11_na, img_l12_na, img_l13_na, img_l14_na, img_l15_na, img_l16_na, img_l17_na, img_l18_na, img_l19_na, img_l20_na,
                   img_l21_na, img_l22_na, img_l23_na, img_l24_na, img_l25_na, img_l26_na,
                   img_l1_comp, img_l2_comp, img_l3_comp, img_l4_comp, img_l5_comp, img_l6_comp, img_l7_comp, img_l8_comp, img_l9_comp, img_l10_comp,
                   img_l11_comp, img_l12_comp, img_l13_comp, img_l14_comp, img_l15_comp, img_l16_comp, img_l17_comp, img_l18_comp, img_l19_comp, img_l20_comp,
                   img_l21_comp, img_l22_comp, img_l23_comp, img_l24_comp, img_l25_comp, img_l26_comp,
                   img_note)
                  VALUES (@Serial, @CustDfe, @EngImg, @SerialDup, @AssetLoc, @AssetName,
                          @ImgL1Pend, @ImgL2Pend, @ImgL3Pend, @ImgL4Pend, @ImgL5Pend, @ImgL6Pend, @ImgL7Pend, @ImgL8Pend, @ImgL9Pend, @ImgL10Pend,
                          @ImgL11Pend, @ImgL12Pend, @ImgL13Pend, @ImgL14Pend, @ImgL15Pend, @ImgL16Pend, @ImgL17Pend, @ImgL18Pend, @ImgL19Pend, @ImgL20Pend,
                          @ImgL21Pend, @ImgL22Pend, @ImgL23Pend, @ImgL24Pend, @ImgL25Pend, @ImgL26Pend,
                          @ImgL1NA, @ImgL2NA, @ImgL3NA, @ImgL4NA, @ImgL5NA, @ImgL6NA, @ImgL7NA, @ImgL8NA, @ImgL9NA, @ImgL10NA,
                          @ImgL11NA, @ImgL12NA, @ImgL13NA, @ImgL14NA, @ImgL15NA, @ImgL16NA, @ImgL17NA, @ImgL18NA, @ImgL19NA, @ImgL20NA,
                          @ImgL21NA, @ImgL22NA, @ImgL23NA, @ImgL24NA, @ImgL25NA, @ImgL26NA,
                          @ImgL1Comp, @ImgL2Comp, @ImgL3Comp, @ImgL4Comp, @ImgL5Comp, @ImgL6Comp, @ImgL7Comp, @ImgL8Comp, @ImgL9Comp, @ImgL10Comp,
                          @ImgL11Comp, @ImgL12Comp, @ImgL13Comp, @ImgL14Comp, @ImgL15Comp, @ImgL16Comp, @ImgL17Comp, @ImgL18Comp, @ImgL19Comp, @ImgL20Comp,
                          @ImgL21Comp, @ImgL22Comp, @ImgL23Comp, @ImgL24Comp, @ImgL25Comp, @ImgL26Comp,
                          @ImgNote)
                  ON DUPLICATE KEY UPDATE
                      cust_dfe = @CustDfe,
                      eng_img = @EngImg,
                      asset_loc = @AssetLoc,
                      asset_name = @AssetName,
                      img_l1_pend = @ImgL1Pend,
                      img_l2_pend = @ImgL2Pend,
                      img_l3_pend = @ImgL3Pend,
                      img_l4_pend = @ImgL4Pend,
                      img_l5_pend = @ImgL5Pend,
                      img_l6_pend = @ImgL6Pend,
                      img_l7_pend = @ImgL7Pend,
                      img_l8_pend = @ImgL8Pend,
                      img_l9_pend = @ImgL9Pend,
                      img_l10_pend = @ImgL10Pend,
                      img_l11_pend = @ImgL11Pend,
                      img_l12_pend = @ImgL12Pend,
                      img_l13_pend = @ImgL13Pend,
                      img_l14_pend = @ImgL14Pend,
                      img_l15_pend = @ImgL15Pend,
                      img_l16_pend = @ImgL16Pend,
                      img_l17_pend = @ImgL17Pend,
                      img_l18_pend = @ImgL18Pend,
                      img_l19_pend = @ImgL19Pend,
                      img_l20_pend = @ImgL20Pend,
                      img_l21_pend = @ImgL21Pend,
                      img_l22_pend = @ImgL22Pend,
                      img_l23_pend = @ImgL23Pend,
                      img_l24_pend = @ImgL24Pend,
                      img_l25_pend = @ImgL25Pend,
                      img_l26_pend = @ImgL26Pend,
                      img_l1_na = @ImgL1NA,
                      img_l2_na = @ImgL2NA,
                      img_l3_na = @ImgL3NA,
                      img_l4_na = @ImgL4NA,
                      img_l5_na = @ImgL5NA,
                      img_l6_na = @ImgL6NA,
                      img_l7_na = @ImgL7NA,
                      img_l8_na = @ImgL8NA,
                      img_l9_na = @ImgL9NA,
                      img_l10_na = @ImgL10NA,
                      img_l11_na = @ImgL11NA,
                      img_l12_na = @ImgL12NA,
                      img_l13_na = @ImgL13NA,
                      img_l14_na = @ImgL14NA,
                      img_l15_na = @ImgL15NA,
                      img_l16_na = @ImgL16NA,
                      img_l17_na = @ImgL17NA,
                      img_l18_na = @ImgL18NA,
                      img_l19_na = @ImgL19NA,
                      img_l20_na = @ImgL20NA,
                      img_l21_na = @ImgL21NA,
                      img_l22_na = @ImgL22NA,
                      img_l23_na = @ImgL23NA,
                      img_l24_na = @ImgL24NA,
                      img_l25_na = @ImgL25NA,
                      img_l26_na = @ImgL26NA,
                      img_l1_comp = @ImgL1Comp,
                      img_l2_comp = @ImgL2Comp,
                      img_l3_comp = @ImgL3Comp,
                      img_l4_comp = @ImgL4Comp,
                      img_l5_comp = @ImgL5Comp,
                      img_l6_comp = @ImgL6Comp,
                      img_l7_comp = @ImgL7Comp,
                      img_l8_comp = @ImgL8Comp,
                      img_l9_comp = @ImgL9Comp,
                      img_l10_comp = @ImgL10Comp,
                      img_l11_comp = @ImgL11Comp,
                      img_l12_comp = @ImgL12Comp,
                      img_l13_comp = @ImgL13Comp,
                      img_l14_comp = @ImgL14Comp,
                      img_l15_comp = @ImgL15Comp,
                      img_l16_comp = @ImgL16Comp,
                      img_l17_comp = @ImgL17Comp,
                      img_l18_comp = @ImgL18Comp,
                      img_l19_comp = @ImgL19Comp,
                      img_l20_comp = @ImgL20Comp,
                      img_l21_comp = @ImgL21Comp,
                      img_l22_comp = @ImgL22Comp,
                      img_l23_comp = @ImgL23Comp,
                      img_l24_comp = @ImgL24Comp,
                      img_l25_comp = @ImgL25Comp,
                      img_l26_comp = @ImgL26Comp,
                      img_note = @ImgNote";

    using (MySqlCommand cmd = new MySqlCommand(sql, conn))
    {
        // 绑定参数,确保和SQL中的@占位符一一对应
        cmd.Parameters.AddWithValue("@Serial", SerialCombo.Text);
        cmd.Parameters.AddWithValue("@CustDfe", Global.cust_dfe);
        cmd.Parameters.AddWithValue("@EngImg", EngImgcomboBx.Text);
        cmd.Parameters.AddWithValue("@SerialDup", SerialCombo.Text);
        cmd.Parameters.AddWithValue("@AssetLoc", AssetLocTxtBx.Text);
        cmd.Parameters.AddWithValue("@AssetName", AssetNameTxtBx.Text);
        
        // 单选按钮状态参数
        cmd.Parameters.AddWithValue("@ImgL1Pend", ImgL1Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL2Pend", ImgL2Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL3Pend", ImgL3Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL4Pend", ImgL4Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL5Pend", ImgL5Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL6Pend", ImgL6Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL7Pend", ImgL7Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL8Pend", ImgL8Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL9Pend", ImgL9Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL10Pend", ImgL10Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL11Pend", ImgL11Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL12Pend", ImgL12Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL13Pend", ImgL13Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL14Pend", ImgL14Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL15Pend", ImgL15Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL16Pend", ImgL16Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL17Pend", ImgL17Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL18Pend", ImgL18Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL19Pend", ImgL19Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL20Pend", ImgL20Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL21Pend", ImgL21Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL22Pend", ImgL22Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL23Pend", ImgL23Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL24Pend", ImgL24Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL25Pend", ImgL25Pend.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL26Pend", ImgL26Pend.Checked ? 1 : 0);
        
        cmd.Parameters.AddWithValue("@ImgL1NA", ImgL1NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL2NA", ImgL2NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL3NA", ImgL3NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL4NA", ImgL4NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL5NA", ImgL5NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL6NA", ImgL6NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL7NA", ImgL7NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL8NA", ImgL8NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL9NA", ImgL9NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL10NA", ImgL10NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL11NA", ImgL11NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL12NA", ImgL12NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL13NA", ImgL13NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL14NA", ImgL14NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL15NA", ImgL15NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL16NA", ImgL16NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL17NA", ImgL17NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL18NA", ImgL18NA.Checked ? 1 : 0);
        cmd.Parameters.AddWithValue("@ImgL19
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 11:24:44