如何使用日期时间选择器使用 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
就可以了。
当我开始说 "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
就可以了。