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

如何在ASP.NET Core中查询MySQL指定ID行?现有代码问题如何排查?

代码问题汇总
  • 最核心的错误:你在SQL语句中声明了参数占位符@UsersId,但没有给MySqlCommand对象添加对应的参数赋值,方法接收的id参数完全没有传入SQL执行流程,会直接导致SQL执行异常或者查询不到任何结果。
  • 资源释放冗余:你已经用using关键字包裹了MySqlConnection和MySqlCommand对象,using会在代码块执行结束后自动释放对应资源,额外手写myReader.Close()、mycon.Close()属于多余操作。
  • 缺少异常处理逻辑:数据库连接失败、SQL执行报错时会直接抛出未处理异常,前端仅能拿到通用500错误,无法定位问题也没有友好提示。
  • 入参无校验:没有对传入的id做合法性校验(比如id小于等于0的非法值),无效请求直接访问数据库属于不必要的性能浪费。
  • 返回格式不友好:直接返回DataTable序列化后的结果结构冗余,建议转成强类型实体对象返回,更方便前后端对接。
修正后的参考代码
// 先定义用户实体类
public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

[HttpGet("{id}")]
public IActionResult Get(int id)
{
    // 提前校验入参
    if (id <= 0)
    {
        return BadRequest("无效的用户ID");
    }
    string query = @"select id,firstname,lastname from udemydb.users where id=@UsersId";
    string sqlDataSource = _configuration.GetConnectionString("UsersAppCon");
    User user = null;
    try
    {
        using (MySqlConnection mycon = new MySqlConnection(sqlDataSource))
        {
            mycon.Open();
            using (MySqlCommand myCommand = new MySqlCommand(query, mycon))
            {
                // 补上参数赋值
                myCommand.Parameters.AddWithValue("@UsersId", id);
                using (MySqlDataReader myReader = myCommand.ExecuteReader())
                {
                    if (myReader.Read())
                    {
                        user = new User
                        {
                            Id = myReader.GetInt32("id"),
                            FirstName = myReader.IsDBNull("firstname") ? null : myReader.GetString("firstname"),
                            LastName = myReader.IsDBNull("lastname") ? null : myReader.GetString("lastname")
                        };
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        // 可根据需求自行添加日志记录逻辑
        return StatusCode(500, "数据查询失败:" + ex.Message);
    }
    if (user == null)
    {
        return NotFound("未找到对应用户");
    }
    return Ok(user);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:54:03