Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在vb.net中插入日期时出错_Mysql_Vb.net_Date_Insert - Fatal编程技术网

Mysql 在vb.net中插入日期时出错

Mysql 在vb.net中插入日期时出错,mysql,vb.net,date,insert,Mysql,Vb.net,Date,Insert,我的数据库中有一个名为“分解日期”的列。它的类型是“日期” 当我在数据库中插入明细表时,日期列有问题 Private Sub BT_SAVE_Click(sender As Object, e As EventArgs) Handles BT_SAVE.Click Dim SQLStatement As String = "INSERT INTO Pannes VALUES(03082016,'" & CB_AV.SelectedItem.ToString() & "'

我的数据库中有一个名为“分解日期”的列。它的类型是“日期” 当我在数据库中插入明细表时,日期列有问题

Private Sub BT_SAVE_Click(sender As Object, e As EventArgs) Handles BT_SAVE.Click

    Dim SQLStatement As String = "INSERT INTO Pannes VALUES(03082016,'" & CB_AV.SelectedItem.ToString() & "','" & TXT_PAN.Text & "','" & TXT_DET.Text & "','" & DateTimePicker1.Value.ToString("yyyy-mm-dd") & "')"
    SavePann(SQLStatement)
End Sub
我得到了错误 第1行“日期”列的日期值不正确:“2016-47-16”
有人能帮忙吗?

你的月份不对。”2016-47-16'. 我怀疑这是一分钟的价值


改用
.ToString(“yyyy-MM-dd”)

您的月份不正确。”2016-47-16'. 我怀疑这是一分钟的价值

使用
.ToString(“yyyy-MM-dd”)
代替。请使用代替concat的大插入字符串。这将避免您描述的此类错误

另外,当MySql将
Date
参数转换回
Date
值时,您不必将其转换为字符串。只需使用
DateTimePicker.Value

 Dim SQLStatement As String = "INSERT INTO Pannes VALUES(@p1,@p2,@p3,@p4,@p5)"
(我建议用有意义的名称替换参数名称)

SavePann
中使用
Using
,因为它会自动处理您的连接和命令对象

Using conn as New MySqlConnection
   conn.ConnectionString = "YourSqlConnectionString"
   conn.Open()
   Using cmd as New MySqlCommand 
       cmd.Connection = conn
       cmd.CommandText = SQLStatement
       cmd.Prepare()

       cmd.Parameters.AddWithValue("@p1", 03082016)
       cmd.Parameters.AddWithValue("@p2", CB_AV.SelectedItem.ToString())
       cmd.Parameters.AddWithValue("@p3", TXT_PAN.Text)
       cmd.Parameters.AddWithValue("@p4", TXT_DET.Text)
       cmd.Parameters.AddWithValue("@p5", DateTimePicker1.Value) 'No ToString needed'

       cmd.ExecuteNonQuery()
  End Using
End Using
请使用一个大的插入字符串代替concat。这将避免您描述的此类错误

另外,当MySql将
Date
参数转换回
Date
值时,您不必将其转换为字符串。只需使用
DateTimePicker.Value

 Dim SQLStatement As String = "INSERT INTO Pannes VALUES(@p1,@p2,@p3,@p4,@p5)"
(我建议用有意义的名称替换参数名称)

SavePann
中使用
Using
,因为它会自动处理您的连接和命令对象

Using conn as New MySqlConnection
   conn.ConnectionString = "YourSqlConnectionString"
   conn.Open()
   Using cmd as New MySqlCommand 
       cmd.Connection = conn
       cmd.CommandText = SQLStatement
       cmd.Prepare()

       cmd.Parameters.AddWithValue("@p1", 03082016)
       cmd.Parameters.AddWithValue("@p2", CB_AV.SelectedItem.ToString())
       cmd.Parameters.AddWithValue("@p3", TXT_PAN.Text)
       cmd.Parameters.AddWithValue("@p4", TXT_DET.Text)
       cmd.Parameters.AddWithValue("@p5", DateTimePicker1.Value) 'No ToString needed'

       cmd.ExecuteNonQuery()
  End Using
End Using

谢谢@FloatingKiwi先生,现在可以了。我还有一个问题:当我生成一个包含所有细分的pdf时,我得到的日期是这样的:2016年8月12日00:00:00:我想得到小时、分和秒的时间,并且只显示短的日期。这里是我的代码,用于列的date`dataRow(DGV_SIT.Columns(4).HeaderText.ToString()=DGV_SIT.Rows(i).Cells(4).Value`我不熟悉PDF生成。我建议用你的代码作为一个新问题发布。谢谢@FloatingKiwi先生,现在可以了。我还有一个问题:当我生成一个包含所有细分的pdf时,我得到的日期是这样的:2016年8月12日00:00:00:我想得到小时、分和秒的时间,并且只显示短的日期。这里是我的代码,用于列的date`dataRow(DGV_SIT.Columns(4).HeaderText.ToString()=DGV_SIT.Rows(i).Cells(4).Value`我不熟悉PDF生成。我建议用你的代码作为新问题发布。