0

请原谅我的英语 http://dev.mysql.com/doc/connector-net/en/connector-net-programming-datetime-null.html 显然.NET 不能接受 0000-00-00 日期。我尝试在我的代码中使用页面中的代码:

 for (int i = 0; i < dataReader.FieldCount; i++) list.Add(new List<string>());

            DateTime myTime;
            try
            {
                //Read the data and store them in the list
                while (dataReader.Read())
                {
                    for (int i = 0; i < dataReader.FieldCount; i++)
                    {
                        if (tablename == "orders")
                        {
                            if (dataReader.IsDBNull(dataReader.GetOrdinal("sell_date"))) MessageBox.Show("111");
                        }
                        list[i].Add(dataReader[i] + "");
                    }
                }
            }
             catch(Exception e)
            {
                 MessageBox.Show("Ошибка: " + e.GetType().ToString() + "\nСообщение: " +e.Message.ToString());
            }

相同的错误:错误:MySql.Data.Types.MySqlСonversionException 消息:无法将 MySQL 日期/时间值转换为 System.DateTime

为什么 MessageBox.Show("111"); 不工作?字段 sell_date 包含 0000-00-00

4

1 回答 1

1

0000-00-00 不是有效的 DateTime 值

要解决此问题,您必须配置 MySQL .NET 连接器(在这里您可以找到所有参数)。

你有两种方法:

  1. 在连接字符串中添加AllowZeroDateTime=true 。这允许您使用名为 MySqlDateTime 的特殊对象来管理 0000-00-00 值。您可以从 MySqlDataReader 获取此类对象
  2. 在连接字符串中添加ConvertZeroDateTime=true 。这样,所有 0000-00-00 值都将转换为 DateTime.MinValue

我更喜欢第二个......我希望这对你有用。

于 2013-09-11T20:27:56.497 回答