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
日期转换为其他日期的问题,因此产生了此错误。
- 在我已经添加的连接字符串中:
AllowZeroDateTime=True
,但这没有帮助 - 现在,从上面的错误消息中,我看到
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