2014-02-13 208 views
0

我將客戶端信息插入到VB.Net 2010的MySql數據庫中找到的客戶端表中。 所有值都正確插入。 問題是當它插入值時,MySql Date列顯示:「0000-00-00」。從VB.Net中保存日期和時間mysql數據庫日期?

我輸入正確後我需要做什麼?

這是代碼:

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

啊!這裏是SQL注入的好機會。 – equisde

回答

1

確定您的問題是,你是設置DTR到最小日期時間:

dtr = DateTimePicker1.MinDate 

我想你想使用的.value財產as per the MSDN documentation here

然後,您在插入語句中使用此變量,這就是爲什麼所有日期都歸零的原因。

如果這不是針對該問題的簡化代碼,請在網上搜索「SQL注入」並瞭解它是什麼以及爲什麼防止它是重要的。您至少應該對輸入進行清理,但最好使用數據庫參數。

另一方面,.net的最小日期時間爲0000-00-00,但MySQL中最小的「受支持」日期爲1000-01-01。 MySQL將允許使用,但不支持,因此不能推薦。有關更多信息,請參閱this page in the manualThe 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'.

相關問題