从 DataReader 访问 DateTime 字段时出现 MySqlConversionException
Posted
技术标签:
【中文标题】从 DataReader 访问 DateTime 字段时出现 MySqlConversionException【英文标题】:MySqlConversionException when accessing DateTime field from DataReader 【发布时间】:2010-10-17 03:32:16 【问题描述】:我有一个基于 mysql 的 C# 应用程序,使用 MySQL Connector;我正在尝试制作一个 DataReader 请求,查询执行良好,但是,当尝试访问 DateTime 字段时,我得到 MySqlConversionException "Unable to convert MySQL date/time value to System.DateTime"
这是原型
if (dr != null && !dr.Read()) return;
sesion.Id = Convert.ToInt32(dr["id"]);
sesion.Usuario = Convert.ToInt32(dr["usuario"]);
sesion.Estado = Convert.ToByte(dr["estado"]);
// doesn't work
sesion.FchCreacion = Convert.ToDateTime(dr["fch_creacion"]);
有什么建议吗? 提前致谢
【问题讨论】:
【参考方案1】:如果您的 MySQL 数据库中的日期时间值为零 (00/00/0000 00:00),则有时会发生此错误。尝试将其添加到连接字符串的末尾:
Allow Zero Datetime=true
【讨论】:
【参考方案2】:在 MySQL 日期/时间和 .NET 日期时间之间进行转换时可能会遇到一些问题,但有一个 useful section in the MySQL documentation 提供有关如何处理这些问题的建议。
【讨论】:
@jkw4703:我已经修复了链接。【参考方案3】:我建议这可能是特定于文化的错误 - 应用程序是否与数据库位于同一服务器上,它们是否具有相同的文化设置?
另外,该列在 MySQL 中是否绝对是日期时间?
【讨论】:
【参考方案4】:它也可以是一个 DBNull 值。
【讨论】:
以上是关于从 DataReader 访问 DateTime 字段时出现 MySqlConversionException的主要内容,如果未能解决你的问题,请参考以下文章