如何将项目添加到列表<对象>从数据库c#

本文关键字:对象 数据库 列表 项目 添加 | 更新日期: 2023-09-27 18:18:09

我正在创建一个list <object>,在这里我从数据库添加我的数据。

但是我完全不知道如何处理一个list <object>

public class ClassList
{
    public int Name { get; set; }
    public string Birthday { get; set; }
}
private void GetClassList()
{
    SqlConnection conn = new SqlConnection(GlobalVar.ConnString);
    SqlCommand cmd = new SqlCommand
        ("SELECT * " +
         "FROM Class_Data ", conn);
    conn.Open();
    SqlDataReader dr = cmd.ExecuteReader();
    try
    {
        List<ClassList> ClassList = new List<ClassList>();
        while (dr.Read())
        {
            ClassList.Add(new ClassList()
            {
                Name = ___?___, //what should i write here
                Birthday = ___?___ //and here
            });
        }
     }
    catch{}
    finally
    {
        dr.Close();
        conn.Close();
    }
}

我找了很多资料,但还是没有找到。

如果有人能帮助我,我将非常感激!

如何将项目添加到列表<对象>从数据库c#

应该这样做:

List<ClassList> ClassList = new List<ClassList>();
        while (dr.Read())
        {
            ClassList.Add(new ClassList()
            {
                Name = (int)dr["Name"], //the name of the db column
                Birthday = dr["Birthday"].ToString();
            });
        }

作为旁注,从可读性/维护的角度来看,可能值得将您的查询从SELECT *...更改为仅选择您需要的列。

另外,Name真的是int吗?看起来它可能是string

您也可以参考文档:

SqlDataReader。项目属性(String)

您可以使用由数据库查询dr返回的列名,如dr["ColumnName"]

 ClassList.Add(new ClassList()
 {
         Name = dr["NameColum"], //what should i write here
         Birthday = dr["BrithColum"] //and here
 });

像这样:

// You don't use "this" in the context
// It seems, that you want to return the collected data (List<ClassList>)
private static List<ClassList> GetClassList() {
  // Put IDisposable into using 
  using (SqlConnection conn = new SqlConnection(GlobalVar.ConnString)) {
    conn.Connect();
    // You want to fetch two fields only, right? Not the entire table (*)
    String sql = 
      @"select Name,
               BirthDay
          from Class_Data"
    using (SqlCommand cmd = new SqlCommand(sql, conn)) {
      List<ClassList> result = new List<ClassList>();
      using (SqlDataReader dr = cmd.ExecuteReader()) {
        while (dr.Read()) {
          result.Add(new ClassList() {
            Name = Convert.ToString(dr[0]),
            Birthday = Convert.ToDateTime(dr[1])
          });
        }
      }  
      return result;  
    }  
  }
}

您可以使用dr["ColumnName"]访问列值