无法将 MySQL.DateTime 转换为具有 0000-00-00 00:00:00 值的 System.DateTime

2024-03-14

我正在开发一个 C# 项目,但遇到了一个问题。该程序允许用户连接到 MySQL 数据库并从每个选定的表中检索信息并将数据写入文件。问题是因为我不知道架构会是什么样子或者它会包含什么值。

如果时间戳列包含日期 0000-00-00 00:00:00 我会收到转换错误,并且无论我尝试什么,它都不会起作用。我尝试转换为字符串我尝试转换为日期时间但我总是收到错误。

以下是我目前尝试获取数据的方式:

using (ConnectMySQLDB db = new ConnectMySQLDB(databaseSettings))
{
   string query = string.Format("SELECT * FROM {0}.{1}", database, table);
   Console.WriteLine("Query: {0}", query);
   using (MySqlCommand cmd = new MySqlCommand(query, db.conn))
   {
      using (MySqlDataReader reader = cmd.ExecuteReader())
      {
         int i = 1;
         while (reader.Read())
         {
            Console.WriteLine("ID: {0}", i);
            fieldsAndValues = new Dictionary<string, string>();
            foreach (ColumnDataTypes fieldAndType in fieldsAndTypes)
            {
               Console.WriteLine("Column: {0} Type: {1}", fieldAndType.field, fieldAndType.dataType);
               string formattedValue = "";
               if (fieldAndType.dataType == "timestamp")
               {
                  DateTime date = DateTime.Parse(reader.GetDateTime(fieldAndType.field).ToString());
                  formattedValue = date.ToString("yyyyMMdd");
               }

               else
               {
                  formattedValue = getDBFormattedValue(reader.GetString(fieldAndType.field), fieldAndType.dataType);
                  fieldsAndValues.Add(fieldAndType.field, formattedValue);
               }
            }
            rows.Add(fieldsAndValues);
            i++;
         }
      }
   }
}

我还在连接器字符串中添加了允许零日期和将零日期转换为空选项,如下所示:

connString = "server=" + server + ";uid=" + username + ";pwd=" + password + ";port=" + port + ";Allow Zero Datetime=true;zeroDateTimeBehavior=convertToNull;Convert Zero Datetime=true";

看着本文档 http://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html,看起来您指定了两个矛盾的选项(AllowZeroDateTime=true and ConvertZeroDateTime=true)和一个似乎未列出的(ZeroDateTimeBehavior=ConvertToNull).

我建议除非你有实际数据DateTime.MinValue您不想将其与“零”值混淆,您just指定ConvertZeroDateTime=true并检测结果是否为DateTime.MinValue。你绝对不应该 call reader.GetDateTime(),然后将结果转换为字符串,然后再转换回DateTime- 你应该尽可能避免字符串转换,因为它们很容易把事情搞砸。

目前尚不清楚您想要这些“零”值的字符串值,但您应该能够将它们特殊化DateTime.MinValue相当容易。就个人而言,我实际上会尝试尽可能地将数据保持在其“本机”形式,而不是将所有内容都转换为字符串,但这是一场不同的战斗。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将 MySQL.DateTime 转换为具有 0000-00-00 00:00:00 值的 System.DateTime 的相关文章

随机推荐

  • jqGrid警告请选择行位置

    有没有办法将对话框消息 请选择行 定位在所选网格的左上角 我只想在警报警告中具有相同的行为 就像编辑和删除表单一样 这个主题解决方案对我不起作用 AlertMod警告消息的JQGrid位置 https stackoverflow com q
  • 在 POST Django 上加密密码

    除了使用 SSL 之外 还有什么方法可以在第一次 POST 到服务器时在 Django 框架中加密密码 例如 如果我有一个接受用户名和密码的表单 然后将其发送到另一个视图 那么发送到后端的密码不是未加密的吗 如果是这样 有没有办法在传输到后
  • 为 testProbe 提供 ActorPath

    我有一些代码使用 ActorPath 而不是 ActorRef 向演员发送消息 system actorSelection user myActor a message 我需要确保这条消息确实被发送了 因此 我需要在测试中创建一个位于此 a
  • 如何从 localhost 向我的 docker 容器发送 HTTP 请求?

    我在向 Docker 容器 它是与 Redis 数据库通信的 Node js API 发出 HTTP 请求时遇到问题 该容器在 VM Docker Toolbox 内运行 我已经使用所需的端口设置了 Dockerfile 和 docker
  • 两个具有共享滚动条的 Gtk TextView 小部件

    我想要两个并排的 TextView 小部件 它们与单个滚动条一起滚动 我可以将两个 TextView 小部件放入 Hbox 然后将它们添加到 Viewport 然后添加到 ScrolledWindow 然而 这不会按我想要的方式工作 从滚动
  • 在 Octave 中的曲面图顶部绘制 3D 线

    我根据一些数据绘制了一个曲面 在同一个图中 我想要一条 3D 线 我有要绘制的线的 x y z 值 当我尝试在同一图中使用plot3 x y z 执行此操作时 该线始终位于表面下方 有没有什么办法解决这一问题 不知道Matlab中是否也出现
  • 在android中获取列表视图项目的点击次数

    我想计算列表视图中特定项目的点击次数 假设列表视图中有 3 个项目 我第一次单击第一个项目 它应该显示第一个项目点击计数为 1 的 toast 消息 现在 如果我再次单击第一个项目 消息应该是第一个项目点击计数为 2 对于其他项目依此类推
  • JUnit5:测试多个类而不重复代码

    我已经用 Java 构建了自己的堆栈实现 如下所示 有一个接口 Stack 它提供了基本功能 pop push peek 等 然后我有 2 个具体的类 一个借助数组 另一个带有链表 在这种情况下如何并不重要 现在我的问题是 我想用 JUni
  • Android sqlite将WAL文件内容刷新到主数据库文件中

    我正在尝试创建我的应用程序数据库内容的备份 对于大多数设备来说 它工作正常 但有一些设备默认启用了 wal 模式 这会导致问题 从我读过的所有内容来看 调用 pragma wal checkpoint 应该将 wal 文件的内容刷新到主数据
  • Python argparse:在帮助条目之间插入空行

    使用 argparse 时 传递 help程序生成帮助文本 不幸的是 它很难阅读 因为选项之间没有空行 这里摘录一段来说明 optional arguments h help show this help message and exit
  • 更新数组变量的状态

    我想更改 setArray 的状态 但无法更改它 console log 显示空数组 其他州都在工作 但这个州不行 我也使用过 useEffect 但什么也没有发生 请给我一个解决方案 import React from react imp
  • 如何创建与列相关的大小的 Pyspark 窗口函数

    当我尝试使用 pyspark 中的窗口函数对与列相关的前行数进行累积值时 出现意外错误 重现我遇到的错误的最小工作示例 MWE 如下 from pyspark sql import Window import pandas as pd df
  • 在Python中处理键盘事件

    如何在 python 中处理键盘事件 更确切地说 我需要为我的命令行应用程序管理键盘箭头和其他一些键 是否有一个模块可以实现此目的 或者我需要使用例如 if get key mykey do Something 它是伪代码 来逐个处理键 我
  • 使用 Django 在 Heroku 上提供根级静态文件?

    我需要在 Heroku 上提供几个根级静态文件 例如 domain com favicon ico 以下是当前的文件列表 favicon ico crossdomain xml sitemap xml robots txt humans t
  • 检测服务中的屏幕方向变化[重复]

    这个问题在这里已经有答案了 一个非常简单直接的问题 服务是否可以检测屏幕方向的变化 如果是这样 怎么办 此链接将回答您的问题 如何使用服务来监控 Android 中的方向变化 https stackoverflow com question
  • MUI 网格禁用 GridToolBar 中的导出按钮

    如何在 MUI 中禁用 覆盖 XGrid GridToolbar 的导出按钮 对于将来重新讨论这个问题的任何人 我发现 DataGrid 组件上的组件组件属性允许您传入具有 csvOptions 的对象来禁用导出按钮
  • 为什么从 INSTALLED_APPS 中删除“django.contrib.sites”可以修复我突然出现的“DoesNotExist at /admin/”错误?

    昨天我设置了一个新的 Django 应用程序 当我停止工作时 管理员仍然可以正常工作 今天早上我运行服务器 我看到这个错误页面 DoesNotExist at admin Site matching query does not exist
  • 在 mongodb 中按 $type 编号查找

    我有以下文件 gt db people insert name Bob gt db people insert name 42 如果我需要按类型查找String我可以用 gt db people find name type 2 Where
  • 运行时服务不再注入 DNX 控制台应用程序 (RC1)

    我曾经能够注入运行时服务 例如IApplicationEnvironment到构造函数中PogramDNX 控制台应用程序的类 但是 使用最新的 RC1 CI 版本 服务不再被注入 public Program IApplicationEn
  • 无法将 MySQL.DateTime 转换为具有 0000-00-00 00:00:00 值的 System.DateTime

    我正在开发一个 C 项目 但遇到了一个问题 该程序允许用户连接到 MySQL 数据库并从每个选定的表中检索信息并将数据写入文件 问题是因为我不知道架构会是什么样子或者它会包含什么值 如果时间戳列包含日期 0000 00 00 00 00 0