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

REST API查询SQL Server单条员工数据失效,请求技术解决建议

排查REST API按姓名查询返回全部数据的问题

看起来你遇到的核心问题是按姓名查询的API没有正确过滤数据,反而返回了全部员工,我帮你梳理几个关键排查点和修复方案:

1. 先排查路由冲突问题

首先确认你的ASP.NET路由配置:如果返回全部数据的Get()方法和按姓名查询的FetchStaffInfoByName()方法的路由完全一致(都映射到/api/EmployeeDB),框架可能会优先匹配无参数的Get()方法,导致你带参数的请求还是走了返回全部的逻辑。

解决办法:给查询方法加上明确的路由特性,避免冲突:

[HttpGet("ByName")]
public IEnumerable<EmployeeDB> FetchStaffInfoByName(string Fullname)
{
    // 你的方法逻辑
}

之后调用时使用https://localhost:44320/api/EmployeeDB/ByName?fullname=James Hall,确保请求命中正确的方法。

2. 修复SQL语句的致命问题(最关键)

你当前的SQL字符串拼接存在两个严重问题:

  • 语法错误:字符串类型的字段在SQL中需要用单引号包裹,你的代码直接拼接where Fullname = " + Fullname,生成的SQL会是where Fullname = James Hall——这在SQL里会被解析成两个标识符,语法错误,但部分情况下数据库可能会忽略这个错误,执行不带条件的查询(返回全部数据)。
  • SQL注入风险:直接拼接用户输入是高危操作,恶意用户可以通过构造输入篡改你的SQL逻辑。

必须改用参数化查询来解决这两个问题:

public IEnumerable<EmployeeDB> FetchStaffInfoByName(string Fullname) 
{ 
    using (SqlConnection con = new SqlConnection(connectionstring)) // 用using自动释放连接,避免资源泄漏
    {
        DataTable dt = new DataTable(); 
        con.Open(); 
        string query = "select * from [EmployeeDB].[dbo].[EmployeeTable] where Fullname = @Fullname"; 
        SqlDataAdapter adapter = new SqlDataAdapter(query, con);
        // 添加参数,自动处理字符串引号和注入风险
        adapter.SelectCommand.Parameters.AddWithValue("@Fullname", Fullname);
        adapter.Fill(dt); 

        List<EmployeeDB> empdb = new List<Models.EmployeeDB>(dt.Rows.Count); 
        if (dt.Rows.Count > 0) 
        { 
            foreach (DataRow empdbrecord in dt.Rows) 
            { 
                empdb.Add(new ReadEmployee(empdbrecord)); 
            } 
        } 
        return empdb; 
    }
}

3. 调试验证参数与SQL语句

  • 在FetchStaffInfoByName方法开头加断点,检查Fullname参数是否正确获取到了James Hall的值——如果参数为null/空字符串,SQL条件会失效,导致返回全部数据。
  • 调试时查看adapter.SelectCommand.CommandText,确认最终生成的SQL语句是否包含正确的条件,这能快速定位语法问题。

4. 检查数据库字段的大小写匹配

如果你的数据库排序规则是区分大小写的,要确保代码中的Fullname和数据库表的字段名完全一致(比如数据库字段是fullname,代码里写Fullname会导致条件不匹配)。不过从你的Get()方法能正常返回数据来看,这个可能性较低,但可以作为排查项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:57:29