无法将MySQL日期/时间值转换为System.DateTime.Could not存储0/0/0000 0:00:00值?

时间:2014-04-11 08:49:59

标签: mysql vb.net datetime null

Me.TreatmentsTableAdapter.Fill(Me.UserDataSet1.treatments)

此行产生错误:

Unable to convert MySQL date/time value to System.DateTime. Couldn't store <0/0/0000 0:00:00> in TreatmentDateEdited Column.  Expected type is DateTime.

TreatmentDateEdited列是DateTime列,但遗憾的是包含一些NULL值。 我知道数据集中存在一个问题,即将NULL日期转换为其他任何内容,从而产生了这个错误。

  1. 在连接字符串中我已添加:AllowZeroDateTime=True但这没有帮助
  2. 现在从上面的错误信息中我看到NULL值已经转换为0/0/0000 0:00:00,但它无法将其存储在日期字段中。
  3. 为了让Tableadapter正常运行,我应该使用哪种日期格式?

    编辑:我在这里发现了可能的问题: DateTime类型的MySQL列不允许我以我尝试的任何格式输入日期。我发现默认日期格式为1000-01-01 00:00:00,但它不会接受!这是错误

      

    单元格的值无效(第3行,第8列)。   此单元格中更改的值未被识别为有效.Net Framework数据类型:MySqlDateTime   错误消息:来自&#39; System.String&#39;的无效转换to&#39; MySql.Data.Types.MySqlDateTime&#39;。

    因此,如果我不能手动在日期列中写日期,TableAdapter也不会这样做。有什么想法吗?

    EDIT2:@GoroundoVipa 问题是我不循环数据集,但在表单控件中将其用作数据源。 以下是我注意到的另外两件事: 1.使用VisualStudio ServerExplorer访问数据库时,我无法在datetime字段中输入新数据(产生上述错误) 2.当我通过My​​SQL工作台访问数据库时,我收到了另一个错误: &#34;错误:DBTABLE:表数据不可编辑,因为没有为表定义主键&#34; 服务器:MySQL 版本:5.1.73

    如果它没有PK,我怎么能编辑表格行。它从来没有被要求!

1 个答案:

答案 0 :(得分:1)

日期的SQL NULL值为1900-01-01 00:00:00.000,您将无法在0000-00-00 00:00:00.000

中插入日期

我最近经历过,我的解决方案是存储NULL值并在DataGridView或Etc中显示时替换它......

样品:

if DataGridView1.Rows(e.Index).Cells(10).Value.ToString = "1900-01-01 00:00:00.000" Then

DataGridView1.Rows(e.Index).Cells(10).Value = ""

End If