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


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列是不幸地包含一些NULL值的DateTime列。我知道数据集中存在将NULL日期转换为其他日期的问题,因此产生了此错误。

  1. 在我已经添加的连接字符串中:AllowZeroDateTime=True,但这没有帮助
  2. 现在,从上面的错误消息中,我看到NULL值已经转换为0/0/0000 0:00:00,但它无法将其存储在日期字段中

我应该在这里使用什么日期格式才能使Tableadapter正常工作?

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

单元格(第3行第8列(的值无效。此单元格中更改的值未被识别为有效。。Net Framework数据类型:MySqlDateTime错误消息:从"System.String"到"MySql.Data.Types.MySqlDateTime"的强制转换无效。

所以,如果我不能手动在日期栏中写日期,TableAdapter也不会。有什么想法吗?

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

如果表行没有PK,我怎么就不能编辑它呢。这从来都不是必需的!

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

我最近遇到过这种情况,我的解决方案是存储NULL值,并在DataGridView或其他…中显示时替换它

样品:

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

相关内容

  • 没有找到相关文章