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

如何检查零件号是否存在于tblpart_material表及C#代码实现

修正SQL语句与C#代码实现

一、修正检查零件号的SQL语句

你原来的SQL存在语法错误(缺少FROM子句)且逻辑冗余,根据需求分两种场景提供正确语句:

场景1:仅检查指定零件号是否存在于tblpart_material表

SELECT number FROM tblpart_material WHERE number = 'MAT100007'

有返回结果则表示零件号存在,无结果则不存在。

场景2:确认零件号在主表tblpart中,同时存在于tblpart_material表

用INNER JOIN关联查询:

SELECT p.number
FROM tblpart p
INNER JOIN tblpart_material m ON p.number = m.number
WHERE p.number = 'MAT100007'

或者用EXISTS实现更高效的存在性验证:

SELECT p.number
FROM tblpart p
WHERE p.number = 'MAT100007'
AND EXISTS (SELECT 1 FROM tblpart_material m WHERE m.number = p.number)

二、C#代码整合逻辑

你的现有代码存在变量名不一致、无数据时会抛异常的问题,修正后如下(基于Dapper实现,无匹配数据时返回null):

public Material GetMaterialByNumber(string number)
{
    using (IDbConnection db = new MySqlConnection(AppConnection.ConnectionString))
    {
        // 可根据需求替换为上述场景1或场景2的SQL语句
        string query = @"SELECT * FROM tblpart_material WHERE number = @Number";
        
        // QuerySingleOrDefault在无匹配时返回null,有匹配时返回单个Material对象
        return db.QuerySingleOrDefault<Material>(query, new { Number = number });
    }
}

关键说明

  • QuerySingleOrDefault<T>:Dapper方法,查询单个结果,无匹配时返回引用类型的默认值null
  • 参数化查询:使用@Number避免SQL注入风险
  • using语句:自动释放数据库连接,无需手动处理连接状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:45:30