我将客户端信息插入到VB.Net 2010的MySql数据库中的Clients表中。 正确插入所有值。 问题是当它插入值时,MySql Date列显示:“0000-00-00”。
正确输入后我需要做什么?
这是代码:
Dim dtb, dtr As DateTime
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "yyyy-mm-dd"
dtb = DateTimePicker1.MinDate
txtdtb.AppendText(dtb)
DateTimePicker2.Format = DateTimePickerFormat.Custom
DateTimePicker2.CustomFormat = "yyyy-mm-dd"
dtr = DateTimePicker1.MinDate
ExecSQL("INSERT INTO clients VALUES('" & clid.Text & "','" & clname.Text & "','" & clgen.Text & "','" & dtb & "','" & claddress.Text & "','" & clemail.Text & "','" & clphone.Text & "','" & clocp.Text & "','" & dtr & "')")
MsgBox("Record Saved", MsgBoxStyle.Information, "Save")
FillList(frmMember.lvMember, GetData("SELECT * FROM clients"))
End If
答案 0 :(得分:1)
确定您的问题是您将dtr设置为最短日期时间:
dtr = DateTimePicker1.MinDate
我认为您要使用.value
属性as per the MSDN documentation here。
然后在insert语句中使用此变量,这就是为什么所有日期都归零。
如果这不是用于问题目的的简化代码,请在网上搜索“SQL注入”并了解它是什么以及防止它的重要性。您应该至少清理您的输入,但最好使用数据库参数。
另一方面,.net的最小DateTime是0000-00-00,但MySQL中最小的“支持”日期是1000-01-01。 MySQL将允许发布但不受支持,因此无法推荐。有关详细信息,请参阅this page in the manual。 The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in 'YYYY-MM-DD' format. The supported range is '1000-01-01' to '9999-12-31'.