首页 > 解决方案 > .Net Core 读取 SQL 数据库返回空值

问题描述

首先,请记住我是 .net 核心的新手。我正在尝试从 sql db 读取数据,但是对于字符串,我得到空值,对于整数,我得到 0 作为值。

有趣的是,我得到了包含 5 个项目的数组列表(因为选择了前 5 个),并且列数正确,但就像我说的所有值都是 null 或 0...

    public List<Student> Index()
    {
        List<Student> students = new List<Student>();
        string connectionString = configuraton.GetConnectionString("DefaultConnection");

        string query = "SELECT TOP 5 * FROM tblStudents";

        using (SqlConnection con = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(query, con))
            {
                con.Open();

                using (SqlDataReader reader = cmd.ExecuteReader())
                {

                    while (reader.Read())
                    {
                        Student student = new Student();
                        students.Add(student);
                    }
                }
            }
        }

        return students;

    }

更清楚地说,这是我在打断点时为学生得到的

  id = 0
  contactPerson = null
  contactPhone = null
  createdDate = {01.01.0001 12:00:00 AM}

标签: sql-server.net-coreado.net

解决方案


您正在遍历阅读器中的所有值,但没有将值保存到 Student 类,这意味着您正在将空类添加到students集合中

 while (reader.Read())
  {
    Student student = new Student();
    students.Add(student);
  }

而是使用这样的东西:

while (reader.Read())
      {
        Student student = new Student();
        student.Id = Convert.ToInt32(reader["Id"]);
        student.Name = Convert.ToString(reader["Name"]);
        students.Add(student);
      }

推荐阅读