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

使用DevExpress GridLookUpEdit插入数据时SQL语法错误求助

问题分析与解决方案

错误根源

出现Incorrect syntax near '2'错误的核心原因有两个:

  1. SQL字符串拼接引发语法错误:直接拼接变量生成SQL语句时,若idUNIT的值格式不符合要求(比如字符串类型未加引号、值包含特殊字符),会触发SQL语法错误。
  2. GridLookUpEdit的ValueMember配置不匹配:数据库查询的字段是idunit(全小写),但代码中设置ValueMember = "idUnit"(大小写混合),DataTable列名区分大小写,这会导致无法正确获取选中项的ID值,进而拼接出错误的SQL语句。

解决步骤

1. 修正GridLookUpEdit的ValueMember配置

将ValueMember改为与数据库查询字段一致的小写:

//fill area
var data_area = SQLHelper.ExecQueryDataAsDataTable("select idunit, Area from pi_unit");
cbara.Properties.DataSource = data_area;
cbara.Properties.ValueMember = "idunit"; // 与数据库字段名称保持一致
cbara.Properties.DisplayMember = "Area";

2. 使用参数化查询替代字符串拼接

参数化查询能彻底避免语法错误,同时杜绝SQL注入风险,修改插入代码如下:

string query = "insert into Pi_Line_No(idUNIT,Line,Line_Size,Circuit,Serial,Pipe_Class) values(@idUNIT, @Line, @Line_Size, @Circuit, @Serial, @Pipe_Class)";

using (SqlConnection connection = new SqlConnection("/* connection info */"))
{
    using (SqlCommand command = new SqlCommand(query, connection))
    {
        // 绑定参数,自动处理数据类型和格式
        command.Parameters.AddWithValue("@idUNIT", cbara.EditValue ?? DBNull.Value);
        command.Parameters.AddWithValue("@Line", Line ?? DBNull.Value);
        command.Parameters.AddWithValue("@Line_Size", Size ?? DBNull.Value);
        command.Parameters.AddWithValue("@Circuit", Circuit ?? DBNull.Value);
        command.Parameters.AddWithValue("@Serial", Serial ?? DBNull.Value);
        command.Parameters.AddWithValue("@Pipe_Class", PipeClass ?? DBNull.Value);
        
        connection.Open();
        command.ExecuteNonQuery();
    }
}

3. 增加前置校验(可选)

保存前检查GridLookUpEdit是否已选中有效项,避免空值插入:

if (cbara.EditValue == null || cbara.EditValue == DBNull.Value)
{
    MessageBox.Show("请选择区域");
    return;
}

内容的提问来源于stack exchange,提问作者sajad saeedi azad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:37