Vb.net 将varchar数据类型转换为datetime数据类型会引发超出范围的异常。。?

Vb.net 将varchar数据类型转换为datetime数据类型会引发超出范围的异常。。?,vb.net,Vb.net,我已将所有日期值作为数据库中的日期,但当我在2014年11月9日给出valye时..它被接受,但当我在2014年10月30日给出值时..它给出了此类错误..为什么..需要帮助 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'TODO:add data into data base If ComboBox1.Tex

我已将所有日期值作为数据库中的日期,但当我在2014年11月9日给出valye时..它被接受,但当我在2014年10月30日给出值时..它给出了此类错误..为什么..需要帮助

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    'TODO:add data into data base
    If ComboBox1.Text <> "" Then
        Dim ab As Long
        ab = random.Next("10000", "99999")


        Dim date1 As Date = Date.ParseExact(TextBox3.Text, "dd/MM/yyyy", Nothing).Date
        Dim date2 As Date = Date.ParseExact(TextBox4.Text, "dd/MM/yyyy", Nothing).Date
        Dim date3 As Date = Date.ParseExact(TextBox5.Text, "dd/MM/yyyy", Nothing).Date
        'Dim date3 As Date = Date.Parse(TextBox5.Text)
        Dim date4 As Date = Date.ParseExact(TextBox6.Text, "dd/MM/yyyy", Nothing).Date

        If Button1.Enabled = False Then
            If TextBox11.Text <> "" And ComboBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" And TextBox4.Text <> "" Then
                TextBox10.Text = ab
                cm.Close()
                cm.Open()
                ComboBox1.Text = Replace(ComboBox1.Text, "'", "''")
                TextBox1.Text = Replace(TextBox1.Text, "'", "''")
                TextBox7.Text = Replace(TextBox7.Text, "'", "''")
                TextBox6.Text = Now.Date.ToString("dd/MM/yyyy")
                TextBox8.Text = DateTime.Now.ToString("HH:mm:ss")
                cmd.CommandText = "insert into worker(faccno,fname,faddr,famcdue,fjoindate,fdate,fattended,fproblem,fsolution,fstatus,fremark,fassign,findate,fintime,fserviceno,falert)values ('" & TextBox11.Text & "', '" & ComboBox1.Text & "','" & TextBox2.Text & "','" & date1.ToString("dd/MM/yyyy") & "','" & date2.ToString("dd/MM/yyyy") & "','" & date3.ToString("dd/MM/yyyy") & "','" & ComboBox4.Text & "','" & TextBox1.Text & "','" & TextBox7.Text & "','" & ComboBox2.Text & "','" & ComboBox6.Text & "','" & ComboBox5.Text & "','" & date4 & "','" & TextBox8.Text & "','" & TextBox10.Text & "','" & ComboBox3.SelectedIndex & "')"
                cmd.ExecuteNonQuery()
                MessageBox.Show("Information Insertion sucessfull", "Save")
                MessageBox.Show(ab, "your service no is")
                Button7.PerformClick()
                cm.Close()
            Else
                MessageBox.Show("enter all values then try to save information", "error")
                Exit Sub
            End If
        ElseIf ComboBox1.Text <> "" Then
            cm.Close()
            cm.Open()
            TextBox1.Text = Replace(TextBox1.Text, "'", "''")
            TextBox7.Text = Replace(TextBox7.Text, "'", "''")
            TextBox6.Text = Now.Date.ToString("dd/MM/yyyy")
            TextBox8.Text = DateTime.Now.ToString("HH:mm:ss")
            ComboBox4.Text = Replace(ComboBox4.Text, "'", "''") 'TODO:this code replaces single quotes to store in data base
            cmd.CommandText = "update worker set faccno= '" & TextBox11.Text & "', fname='" & ComboBox1.Text & "',faddr='" & TextBox2.Text & "',famcdue='" & date1 & "',fjoindate='" & date2 & "',fdate='" & date3 & "',fattended='" & ComboBox4.Text & "',fproblem='" & TextBox1.Text & "',fsolution=  '" & TextBox7.Text & "',fstatus='" & ComboBox2.Text & "',fremark='" & ComboBox6.Text & "',fassign= '" & ComboBox5.Text & "',findate='" & date4 & "',fintime='" & TextBox8.Text & "',fserviceno='" & TextBox10.Text & "',falert='" & ComboBox3.SelectedIndex & "' where fserviceno='" & TextBox10.Text & "'"
            cmd.ExecuteNonQuery()
            MessageBox.Show(" Information Updation sucessfull", "Save")
            Button7.PerformClick()
            cm.Close()
        End If
    Else
        MessageBox.Show("enter all values then try to save information", "error")
        Exit Sub
    End If

End Sub
Private子按钮2\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮2。单击
'TODO:将数据添加到数据库中
如果是ComboBox1.Text“”,则
只要
ab=随机。下一个(“10000”、“99999”)
Dim date1 As Date=Date.ParseExact(TextBox3.Text,“dd/MM/yyyy”,无)。日期
Dim date2 As Date=Date.ParseExact(TextBox4.Text,“dd/MM/yyyy”,无)。日期
Dim date3 As Date=Date.ParseExact(TextBox5.Text,“dd/MM/yyyy”,无)。日期
'Dim date3 As Date=Date.Parse(TextBox5.Text)
Dim date4 As Date=Date.ParseExact(TextBox6.Text,“dd/MM/yyyy”,无)。日期
如果按钮1.Enabled=False,则
如果TextBox11.Text“”和ComboBox1.Text“”和TextBox2.Text“”以及TextBox3.Text“”和TextBox4.Text“”,则
TextBox10.Text=ab
cm.Close()
cm.Open()
ComboBox1.Text=替换(ComboBox1.Text,“”,“”)
TextBox1.Text=Replace(TextBox1.Text,“”,“”)
TextBox7.Text=Replace(TextBox7.Text,“”,“”)
TextBox6.Text=Now.Date.ToString(“dd/MM/yyyyy”)
TextBox8.Text=DateTime.Now.ToString(“HH:mm:ss”)
cmd.CommandText=“将值(“&TextBox11.Text&“,”&ComboBox1.Text&“,”&TextBox2.Text&“,”&date1.ToString(“dd/MM/yyyyy”)&“,”&date2.ToString(“dd/MM/yyyyy”)&“,”&date2.ToString(“dd/MM/yyyyyy”)&“,”&date3(“dd/MM/yyyy”)&“,”&ComboBox4.Text&“,”&TextBox1.Text&“,”&TextBox7.Text&“,”&ComboBox2.Text&“,”&ComboBox6.Text&“,”&ComboBox5.Text&“,”&date4&“,”&TextBox8.Text&“,”&TextBox10.Text&“,”,“&ComboBox3.selectedexedin&“)”
cmd.ExecuteNonQuery()
MessageBox.Show(“信息插入成功”、“保存”)
MessageBox.Show(ab,“您的服务编号为”)
按钮7.PerformClick()
cm.Close()
其他的
显示(“输入所有值,然后尝试保存信息”,“错误”)
出口接头
如果结束
ElseIf ComboBox1.文本“”然后
cm.Close()
cm.Open()
TextBox1.Text=Replace(TextBox1.Text,“”,“”)
TextBox7.Text=Replace(TextBox7.Text,“”,“”)
TextBox6.Text=Now.Date.ToString(“dd/MM/yyyyy”)
TextBox8.Text=DateTime.Now.ToString(“HH:mm:ss”)
ComboBox4.Text=Replace(ComboBox4.Text,“”,“”)”TODO:此代码替换要存储在数据库中的单引号
cmd.CommandText=“update worker set faccno=”&TextBox11.Text&“、fname=”&ComboBox1.Text&“、faddr=”&TextBox2.Text&“、famcdue=”&date1&“、fjoindate=”&date2&“、fdate=”&date3&“、fattend=”&ComboBox4.Text&“、fproblem=”&TextBox1.Text&“、fsolution=”&TextBox7.Text&“、fstatus=”&combox2.Text&“、fstatus=”、fsbox2、”,fremark='&ComboBox6.Text&'、fassign='&Combox5.Text&'、findate='&date4&'、fintime='&TextBox8.Text&'、fserviceno='&TextBox10.Text&'、falert='&Combox3.SelectedIndex&'、where fserviceno='&TextBox10.Text&'”
cmd.ExecuteNonQuery()
MessageBox.Show(“信息更新成功”,“保存”)
按钮7.PerformClick()
cm.Close()
如果结束
其他的
显示(“输入所有值,然后尝试保存信息”,“错误”)
出口接头
如果结束
端接头

在解决实际问题之前,我注意到您正在使用字符串连接来形成SQL语句(永远不要这样做-改用类型化参数!)

关于您发布的问题:有多种可能的原因,但最可能的原因如下:

TextBox6.Text = Now.Date.ToString("dd/MM/yyyy")
…您正在将日期转换为
dd/MM/yyyyy
格式,但SQL server可能希望以斜杠分隔的日期采用
MM/dd/yyyy
格式(默认1033格式-归咎于美国人),在这种情况下,
30
的月份部分没有意义,因此失败


如果使用参数,则不会出现此问题,因为实际日期值(而不是它的字符串表示形式)被传递到数据库客户端库中,然后数据库客户端库可以以一种始终有效的方式为您正确序列化它。

尽管您使用了
Replace
,但您的代码仍容易受到SQL注入攻击,如果有人使用不同的默认日期/时间设置,则它也会失败,因为您没有为
ToString指定显式区域性g
解析