c#中的mysqlconveronexception问题

本文关键字:问题 mysqlconveronexception 中的 | 更新日期: 2023-09-27 18:05:24

我目前正在开发一个c# MySQL导出实用程序。因此,我不打算知道表中每个字段的字段或数据类型。

当我从数据库中的表导出数据时,它显示一个mysqlconveronexception,说明它无法将MySQL日期/时间转换为System.DateTime。当我运行代码时,它正在这样做:

if (!reader.isDBNull(fieldCount)){}

然而,当这行抛出异常时,我通过向MySQL连接字符串添加Allow Zero DateTime=true来修复它,但当我运行代码

时,它不会显示错误
string value = reader.getString(field);

我怎样才能解决这个问题,因为我不知道数据类型是什么,也不知道值是什么。

谢谢你能提供的任何帮助。

c#中的mysqlconveronexception问题

您可以获得原始值作为object:

object value = reader[field];

然后根据它的类型决定怎么做:

if (value is string)
{
    string sVal = value.ToString();
    //handle as string...
}
else if (value is DateTime)
{
    DateTime dtVal = (DateTime)value;
    //handle as DateTime...
}
else
{
    //some other type
}

如果你使用MySQL Connector/Net读取DATETIME值并设置'Allow Zero DATETIME ',那么你应该使用reader.GetValue()方法;在这种情况下,阅读器将返回一个值为'0000-00-00 00:00:00'的MySqlDateTime对象。

连接器/网络连接字符串选项参考

注意,比. net DateTime。MinValue = 00:00:00.0000000, 0001年1月1日

我在一个旧的开源项目中解决了一个类似的问题。在我的Util.DefaultConvert()方法中可以看到它。

技巧是使用Type.GetTypeCode()并打开结果。

然后为每个类型实现严格的转换。其中很可能还有其他代码,您可以签出以执行所需的操作。这里还有MySql提供商