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);
我怎样才能解决这个问题,因为我不知道数据类型是什么,也不知道值是什么。
谢谢你能提供的任何帮助。
您可以获得原始值作为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提供商