将数据插入sql数据库时的日期时间转换问题

Tep*_*orn 0 vb.net datetime datetimepicker

我以前查询:

Dim a As String
a = "INSERT INTO tblVisitor(Name, Sex, TimeIn, EnterDate)
     VALUES('"& txtName.Text &"', '"& cboSex.Text &"', '"& Now() &"', '"& DateTime.Parse(cboEnterDate.Text) &"')"

myCommand = New SqlCommand(a, myConnection)
myCommand.ExecuteNonQuery()
........................................
Run Code Online (Sandbox Code Playgroud)

哪个cboEnterDate是我的DateTime Picker.然后我收到了消息:

Conversion failed when converting date time from character string.
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Dam*_*ver 6

通过构造一个字符串,你a)打开你自己的SQL注入,和b)最终将字符串转换为日期时间到字符串到日期时间.

相反,如果您使用参数:

Dim a As String
a = "INSERT INTO tblVisitor(Name, Sex, TimeIn, EnterDate)
     VALUES(@Name, @Sex, @TimeIn, @EnterDate)"

myCommand = New SqlCommand(a, myConnection)
myCommand.Parameters.AddWithValue("@Name",txtName.Text)
myCommand.Parameters.AddWithValue("@Sex",cboSex.Text)
myCommand.Parameters.AddWithValue("@TimeIn",DateTime.Now)
myCommand.Parameters.AddWithValue("@EnterDate",DateTime.Parse(cboEnterDate.Text))
myCommand.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)

只执行字符串到日期时间的单个转换.虽然,如果cboEnterDateDateTimePicker,您可以避免将其视为字符串:

myCommand.Parameters.AddWithValue("@EnterDate",cboEnterDate.Value)
Run Code Online (Sandbox Code Playgroud)