如何使用日期时间选择器使用 vb.net 在 sql 中插入日期

How to insert just the date in sql using vb.net using a date time picker

当我开始说 "unable to convert mysql date/time value to system.datetime"

时,我总是收到错误消息

这是我的代码

Private Sub Add_Button1(sender As Object, e As EventArgs) Handles Add_Button.Click
    MySqlConn = New MySqlConnection
    MySqlConn.ConnectionString = "Server = Localhost; database = apartmentdb; user id = root; Password = "
    Dim Reader As MySqlDataReader

    Try
        MySqlConn.Open()
        Dim Query As String
        Query = "Insert into Apartmentdb.Bookings(Apartment_ID, Client_ID, Booking_start_Date, Booking_end_Date, Total_Days, Price_per_Week, Total_Price) Values ('" & TextBox5.Text & "', '" & TextBox4.Text & "', '" & DateTimePicker4.Value & "' , '" & DateTimePicker3.Value & "' ,'" & TextBox3.Text & "', '" & TextBox2.Text & "', '" & TextBox1.Text & "')"
        Command = New MySqlCommand(Query, MySqlConn)
        Reader = Command.ExecuteReader

        MessageBox.Show("Data Saved")
        MySqlConn.Close()

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        MySqlConn.Dispose()

    End Try

    Call GridView_load()

End Sub

不是 VB 人,但这应该是一个开始。

Private Sub Add_Button1(sender As Object, e As EventArgs) Handles Add_Button.Click
  Using MySqlConn as New MySqlConnection("Server = Localhost; database = apartmentdb; user id = root; Password = ")
    Dim Query As String
    Query = "Insert into Apartmentdb.Bookings(Apartment_ID, Client_ID, Booking_start_Date, Booking_end_Date, Total_Days, Price_per_Week, Total_Price) 
Values (@Apartment_ID,@Client_ID,@Start_Date,@End_Date,@Total_Days,@Price_Per_week, @Total_Price)"
    MySqlConn.Open()
    Using MyCommand = New MySqlCommand(Query, MySqlConn)
      MyCommand.Parameters.AddWithValue("@ApartmentID",TextBox5.Text)
      MyCommand.Parameters.AddWithValue("@Client_ID", TextBox4.Text)
      // and so on.
      MyCommand.ExecuteNonQuery
      MessageBox.Show("Data Saved")
    End Using
  End Using
  Call GridView_load()
End Sub

注意捕获异常是没有意义的,除非这个函数根本不重要。您应该只捕获您可以处理的异常。 使用消除了对 try finally 的需要,关闭东西。范围内的一切,它与连接池一起工作得很好。 参数化查询不仅可以阻止注入攻击,而且非常适合本地化数据,例如数字和日期格式。

您的问题几乎可以肯定是当您将代码转换 Picker.Value 为字符串时,它会输出一个您的 sql 服务器不知道如何处理的字符串。即使它已经过去了。您可以得到旧的 8/6/2015 is 8th of June or 6th of August 问题。 剥离时间是一个略有不同的问题,具体取决于您的数据库,但是如果您想确保它的时间为 0(午夜),那么 SomePicker.Value.Date 就可以了。