MySQL, Connector и тип даты 0000-00-00

Пожалуйста, извините за мой английский 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

1 ответ

0000-00-00 не является действительным значением DateTime

Чтобы решить эту проблему, вы должны настроить MySQL .NET Connector ( здесь вы можете найти все параметры).

У вас есть два пути:

  1. Добавьте AllowZeroDateTime=true в строку подключения. Это позволяет вам управлять значением 0000-00-00, используя специальный объект MySqlDateTime. Вы можете получить этот тип объекта из MySqlDataReader
  2. Добавьте ConvertZeroDateTime=true в строку подключения. Таким образом, все значения 0000-00-00 будут преобразованы в DateTime.MinValue

Я предпочитаю второе.... Я надеюсь, что это будет полезно для вас.

Другие вопросы по тегам