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
日期转换为其他任何内容,从而产生了这个错误。
AllowZeroDateTime=True
但这没有帮助NULL
值已经转换为0/0/0000 0:00:00
,但它无法将其存储在日期字段中。为了让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.当我通过MySQL工作台访问数据库时,我收到了另一个错误:
&#34;错误:DB
。TABLE
:表数据不可编辑,因为没有为表定义主键&#34;
服务器:MySQL
版本:5.1.73
如果它没有PK,我怎么能编辑表格行。它从来没有被要求!
答案 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