【问题标题】:Get DateTime from Mysql从 Mysql 获取日期时间
【发布时间】:2015-06-21 07:08:08
【问题描述】:

我正在 Mysql 中保存日期和时间(在保存列中),现在我正在尝试使用日期和时间以及温度来绘制图表。我正在使用:

DateTime tm = myReader.GetDateTime("dateandtime");

dateandtime 保存到数据库中,例如包含15.04.2015 10:55:35)。

我的问题是当我尝试制作图形时出现此错误:

“输入的字符串格式不正确”

而且我不知道如何解决它。 我尝试只将日期(例如 15.04.2015)写入数据库并且它可以工作,但我希望保存完整的日期和时间。

有解决这个问题的想法吗?

        string constring = "datasource=localhost;port=3306;username=root;password=";           
        MySqlConnection conDataBase = new MySqlConnection(constring);
        MySqlCommand cmdDataBase = new MySqlCommand("select * from test.edata;", conDataBase);
        MySqlDataReader myReader;
        try
        {
            conDataBase.Open();
            myReader = cmdDataBase.ExecuteReader();

            while (myReader.Read())
            {
                DateTime tm = myReader.GetDateTime("dataandtime");                    
                double tempbd = myReader.GetDouble("temperatura");
                //DateTime tr = Convert.ToDateTime(tm);
                listbd.Add(tm.ToOADate(), tempbd);
            }
            zedGraphControl2.AxisChange();
            zedGraphControl2.Refresh();
            zedGraphControl2.Invalidate();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

我不明白为什么在我的 X 轴上我只有 Minute:Second :(。我添加了一个断点,并且“tm”变量显示了完整的日期和时间,但在我的情节上我只有分钟和秒

【问题讨论】:

  • 能否请您显示相关的 C# 代码引发了该异常?
  • dd.MM.yyyy 是一种奇怪的格式,您将其存储为字符串吗?试试 DateTime.ParseExact msdn.microsoft.com/en-us/library/w2sa9yss%28v=vs.110%29.aspx
  • dateandtime 列的类型是什么?
  • 日期和时间的类型是varchar
  • 为什么将DateTime 值保存为varchar?这是根本问题。

标签: c# mysql datetime


【解决方案1】:

首先,GetDateTime 方法将基于零的列号作为int。这就是为什么,您的代码甚至都无法编译。您需要将其用作;

DateTime tm = myReader.GetDateTime(3);

其次,GetDateTime 不执行任何对话,这就是为什么您的列值必须已经是 DateTime 对象。

强烈怀疑您尝试将 DateTime 值保存为字符。请不要那样做。始终使用正确的列类型。

阅读:Bad habits to kick : choosing the wrong data type

您需要首先将您的列类型更改为DATETIME,将您的DateTime 值直接插入到参数化查询中,并在尝试将它们放入数据库时​​使用GetDateTime 方法及其序号。

也可以使用using statement 来处理你的连接、命令和阅读器。

【讨论】:

  • 我使用 DateTime tm = myReader.GetDateTime(3) 但我有同样的问题。
  • @Ade 您需要先更改您的列类型并使用此方法。
  • 我改变了类型,但是当我从串口读取数据并尝试保存在数据库中时,日期和时间每次都是 0000-00-00 00:00:00。
  • 我不明白为什么在我的 X 轴上我只有 Minute:Second :(。我添加了一个断点,“tm”变量显示了完整的日期和时间,但在我的情节上我有只有分钟和秒。
  • @Ade 您如何准确插入您的DateTime?您是否更改了列类型?
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 2017-11-16
  • 1970-01-01
  • 2021-12-06
  • 2012-12-16
  • 1970-01-01
相关资源
最近更新 更多