【问题标题】:Set WinForm Show Date from MySQL从 MySQL 设置 WinForm 显示日期
【发布时间】:2014-09-20 01:11:10
【问题描述】:

C#/MySQL - 设置 MySQL 的 WinForm 访问日期

所以我创建了一个 MySQL 数据库,我的表单可以访问和登录。我的目标是能够将 MySQL 数据库中的信息作为标签提取到表单中(我知道很简单,对吧?)。

例子:

对我来说最困难的问题是弄清楚如何存储让我们说“订阅”开始/结束日期,并能够在标签上告诉我,我的订阅还剩多少天。所有这些都使用数据库的信息。

(是的,此数据库仅用于测试目的,还没有接近最终版本。)

  • 创建了一个名为 edata 的表。 创建程序将使用的字段 (帐户状态/StartSub/EndSub)

我的问题:我将如何获取输入的日期并创建一个可用于在“剩余天数”标签中显示的值?

【问题讨论】:

    标签: c# mysql winforms


    【解决方案1】:

    我会这样创建表格:

    CREATE TABLE `test`.`New Table` (
      `ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      `FirstName` VARCHAR(45),
      `LastName` VARCHAR(45),
      `Username` VARCHAR(45),
      `Password` VARCHAR(45),
      `Account` INTEGER UNSIGNED,
      `StartSub` DATETIME,
      `EndSub` DATETIME,
      PRIMARY KEY (`ID`)
    )
    ENGINE = InnoDB;
    

    然后像这样查询:

    using (MySqlConnection conn = new MySqlConnection(constring))
    {
        using (MySqlCommand cmd = new MySqlCommand())
        {
            cmd.Connection = conn;
            conn.Open();
    
            cmd.CommandText = "select * from edata where id = 1;";
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
    
            conn.Close();
    
            DateTime dateStart = Convert.ToDateTime(dt.Rows[0]["StartSub"]);
            DateTime dateEnd = Convert.ToDateTime(dt.Rows[0]["EndSub"]);
    
            if (DateTime.Now >= dateStart && DateTime.Now <= dateEnd)
            {
                TimeSpan ts = dateEnd - DateTime.Now;
                label1.Text = "Active";
                label2.Text = ts.TotalDays + " day(s) left";
            }
            else
            {
                label1.Text = "Expired";
                label2.Text = "0 day left";
            }
        }
    }
    

    【讨论】:

    • 谢谢!工作完美。我做了一个与小数位有关的小调整。 label4.Text = ts.TotalDays.ToString("#.#") +" 剩余天数";
    【解决方案2】:

    如果你能解析出这些值,那就很简单了,例如:

    string end_date_string = "2014-09-24";
    string start_date_string = "2014-09-18";
    
    DateTime end_date = DateTime.Parse(end_date_string);         // parse end date
    DateTime start_date = DateTime.Parse(start_date_string);     // parse start date
    TimeSpan dur = end_date.Subtract(start_date);                // total duration
    TimeSpan timeleft = end_date.Subtract(DateTime.Now);         // how much time left until we hit the end_date
    
    Label l;
    l.Text = timeleft.Days.ToString();
    // l.Text = timeLeft.Hours.ToString();
    // l.Text = timeleft.Minutes.ToString();
    

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 2012-02-26
      • 1970-01-01
      相关资源
      最近更新 更多