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

ASP.NET Web API实现获取tbUsers表所有数据的GET方法问题

解决返回所有用户数据的问题

你遇到的问题很典型——当前代码只声明了单个User对象,在循环读取数据时每次都会覆盖这个对象,所以最后只会返回最后一条用户记录。要返回所有用户,你需要用**集合(比如List<User>)**来存储每一条读取到的用户数据。

修改后的完整代码

public List<User> Get() {
    // 用List<User>来存储所有用户
    List<User> users = new List<User>();
    
    // 使用using语句自动释放数据库资源,避免内存泄漏
    using (SqlConnection myConnection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\Downloads\SERVER\SERVER\App_Data\dbCoffeeBreak_.mdf;Integrated Security=True"))
    {
        myConnection.Open();
        using (SqlCommand sqlCmd = new SqlCommand("Select * from tbUsers", myConnection))
        {
            sqlCmd.CommandType = CommandType.Text;
            using (SqlDataReader reader = sqlCmd.ExecuteReader())
            {
                while (reader.Read()) {
                    User u = new User();
                    u.ID = Convert.ToInt32(reader.GetValue(0));
                    u.Login = reader.GetValue(1).ToString();
                    u.Password = reader.GetValue(2).ToString();
                    u.Avatar = reader.GetValue(3).ToString();
                    u.Email = reader.GetValue(4).ToString();
                    u.Online = Convert.ToBoolean(reader.GetValue(5));
                    // 将当前用户添加到集合中
                    users.Add(u);
                }
            }
        }
    }
    return users;
}

关键修改点说明

  1. 改用集合存储:把单个User对象换成List<User>,每次循环创建新的User实例并添加到集合里,这样就能保留所有用户数据。
  2. 使用using语句:原来的代码手动调用myConnection.Close(),但如果中途抛出异常,连接可能无法正常关闭。using语句会自动实现IDisposable接口的资源释放,更安全可靠。
  3. 调整方法返回类型:因为现在返回的是多个用户,方法返回类型要从User改为List<User>,同时你的API路由http://localhost:1442/api/Users需要对应这个无参数的Get方法。

额外建议

  • 你的单个用户查询方法存在SQL注入风险(直接把id拼接到SQL语句里),建议改用参数化查询:
    sqlCmd.CommandText = "Select * from tbUsers where ID = @Id";
    sqlCmd.Parameters.AddWithValue("@Id", id);
    
  • 尽量避免直接用reader.GetValue(index),可以改用列名读取,比如reader["ID"],这样代码更易读,也不会因为表结构调整导致索引出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:42