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生成。我建议用你的代码作为新问题发布。