weixin_44151228 2021-02-06 15:59 采纳率: 58.3%
浏览 169
已结题

c#如何将sql数据库中多条出生日期转换成年龄

 public class Person
        {
            public String Name;
            public DateTime birthday;
            public Int32 Age;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            database db = new database();
            string sql = "select * from JZK_pat where times=1";
            SqlDataReader mydr;
            db.runsql(sql, out mydr);
            while (mydr.Read())
            {
                Person item = new Person();
                int index = mydr.GetOrdinal("birthday");
                item.birthday = mydr.IsDBNull(index) ? new DateTime("1900-01-01") : mydr.GetDateTime(index);
                item.Age = DateTime.Now.Year - item.birthday.Year;
                listBox1.Items.Add(item);
            }
            mydr.Close();  
        }

sql数据库中有多条数据,字段名包括(姓名,性别,出生日期)

想用winform程序的textbox.Item显示出所有数据,但显示的格式为每一行(姓名,性别,年龄)

自己做的是SqlDataReader,但在while循环里无法实现多条出生日期转换成年龄

我是新手,请大神们指导一下,谢谢

  • 写回答

9条回答 默认 最新

  • Go 旅城通票 2021-02-07 14:49
    关注

    字符串用 DateTime.Parse转,而不是new DateTime,ide会有参数类型提示,除非你用记事本来编写代码
     

    public int GetAgeByBirthdate(DateTime birthdate)
        {
            DateTime now = DateTime.Now;
            int age = now.Year - birthdate.Year;
            if (now.Month < birthdate.Month || (now.Month == birthdate.Month && now.Day < birthdate.Day))
            {
                age--;
           }
           return age < 0 ? 0 : age;
       }
    public class Person
    {
    public String Name;
    public DateTime birthday;
    public Int32 Age;
    }
    
    
    private void button1_Click(object sender, EventArgs e)
    {
    database db = new database();
    string sql = "select * from JZK_pat where times=1";
    SqlDataReader mydr;
    db.runsql(sql, out mydr);
    while (mydr.Read())
    {
    Person item = new Person();
    int index = mydr.GetOrdinal("birthday");
    item.birthday = mydr.IsDBNull(index) ? DateTime.Parse("1900-01-01") : mydr.GetDateTime(index);
    
    item.Age =GetAgeByBirthdate(item.birthday);
    
    listBox1.Items.Add(item);
    }
    
    
    
    mydr.Close();
    
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月31日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效