2016-09-29 109 views
0

如何使用中的datetimepicker將數據插入到數據庫中?我試圖將其轉換爲: Format(name_of_the_datetimepicker.Value, "yyyy-MM-dd")在我的SQL聲明中,但我不知道我哪裏錯了。無法將數據插入到mysql datetimepicker

這裏是我的代碼:

Imports MySql.Data.MySqlClient 
    Public Class frmMain 
    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles  MyBase.Load 

    If Not conn Is Nothing Then 
     conn.Close() 
    End If 

    conn = New MySqlConnection("Data Source=" & Server & ";user id=" & UserName & ";password=" & PassWord & ";database=" & DatabaseName & ";") 

    Try 
     conn.Open() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 


    End Sub 

    Private Sub btn_save_Click(sender As Object, e As EventArgs) Handles btn_save.Click 
    Dim cmdSave As MySqlCommand 
    Dim sql As String 
    sql = "INSERT INTO (rental_date, inventory_id, customer_id, return_date, staff_id) VALUES ('" & Format(dt_picker_rental_date.Value, "yyyy-MM-dd") & "', '" & txt_inventory_id.Text & "', '" & txt_customer_id.Text & "', '" & Format(dt_picker_return_date.Value, "yyyy-MM-dd") & "', '" & txt_staff_id.Text & "')" 


    Try 
     cmdSave = New MySqlCommand(sql, conn) 
     cmdSave.ExecuteNonQuery() 

     MsgBox("Success!") 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
    End Sub 
+0

不管你如何格式化,'databases'有自己的格式(即如果字段的數據類型在'datetime'中)。你想在這裏實現什麼? –

+2

您不使用'DateTimePicker'將數據插入到數據庫中。你使用'DateTimePicker'來允許用戶選擇一個日期,並從中得到一個'DateTime'值。然後你使用'DateTime'做什麼與'DateTimePicker'無關。同樣,您可以像插入任何其他用戶輸入一樣將'DateTime'值插入到數據庫中:使用參數。 'DateTime'值或其他數據來自何處無關緊要。瞭解如何使用參數並解決問題。 – jmcilhinney

回答

1

不要使用字符串連接將數據插入SQL代碼。始終使用參數。參數以二進制形式保存所有數據,因此格式不會成爲問題。更重要的是,您受到SQL注入的保護。使用日期,可能看起來像這樣的:如果你要插入只是沒有時間日期

Dim command As New MySqlCommand("INSERT INTO MyTable (DateColumn) VALUES (@DateColumn)", connection) 

command.Parameters.AddWithValue("@DateColumn", myDateTimePicker.Value) 

然後用,而不是僅僅Value

在這裏ADO.NET參數更多信息:

http://jmcilhinney.blogspot.com.au/2009/08/using-parameters-in-adonet.html

0

試試這個。它可能會幫助你。

cmd.Parameters.Add(「日期」,OleDbType.DBDate).value的= DateTimePicker1.Value