我在将日期插入数据库并显示它时遇到问题 我使用Visual Basic 2013和Microsoft SQL数据库文件 我有一个名为约会的表,有一个名为Date的列,其日期类型 我有一个带有DateTimePicker的表单,以这种格式显示日期“dd / MM / yyyy”我的计算机区域设置。
当我尝试将其插入数据库时,通过从DateTimePicker获取日期,如下所示:
DateTimePicker1.Value.Date
我仍然收到错误。我知道Microsoft SQL只采用这种格式“MM / dd / yyyy”,但有没有办法使用visual basic和sql从“dd / MM / yyyy”转换为“MM / dd / yyyy”?
Dim con As New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=" + My.Settings.strTextbox + ";Integrated Security=True;Connect Timeout=30")
Dim cmd As New SqlCommand("insert into Appointment (AssignDoc,Date,TimeFrom,FileNo) values (@AssignDoc,@Date,@TimeFrom,@FileNo)")
cmd.Connection = con
con.Open()
cmd.Parameters.AddWithValue("@AssignDoc", ComboBox6.SelectedItem)
cmd.Parameters.AddWithValue("@Date", DateTimePicker1.Value.Date)
cmd.Parameters.AddWithValue("@TimeFrom", ComboBox1.SelectedItem)
cmd.Parameters.AddWithValue("@FileNo", TextBox2.Text)
Dim reader As SqlDataReader = Nothing
Try
cmd.ExecuteNonQuery()
con.Close()
'CreateAppointment()
MsgBox("Appointment Created Successfully", MsgBoxStyle.Information, "Appointment Created")
TextBox1.Text = ""
TextBox2.Text = ""
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
答案 0 :(得分:1)
使用ADO.NET中的命令对象传递查询,并使用其机制插入参数。将日期作为字符串传递是问题的根源。您不能保证将SQL Server数据库配置为与您的硬编码日期格式兼容的排序规则。
答案 1 :(得分:0)
您的语句I know that Microsoft SQL only takes this format "MM/dd/yyyy"
本身是错误的,因为SQL采用任何指定格式的日期here
在将数据输入数据库之前,您只需要以该格式转换它们。
例如如果您以“mm / dd / yyyy”格式传递参数,则需要在sql中将其转换为
insert into Appointments (Date) values (convert(date,@parameter,101));