{"Only TimeSpan objects can be serialized by MySqlTimeSpan"} 与 VB.NET
{"Only TimeSpan objects can be serialized by MySqlTimeSpan"} with VB.NET
我有 form2 可以在我的 table 中添加新数据然后我得到这个错误:
{"Only TimeSpan objects can be serialized by MySqlTimeSpan"}
当我删除这部分代码时它起作用了:
cm.Parameters.Add(New MySqlParameter("@Time_Operation", MySqlDbType.Time)).Value = Time_OperationTextBox.Text
cm.Parameters.Add(New MySqlParameter("@Start_Time", MySqlDbType.Time)).Value = Start_TimeTextBox.Text
cm.Parameters.Add(New MySqlParameter("@End_Time", MySqlDbType.Time)).Value = End_TimeTextBox.Text
这意味着日期时间工作正常,但我将它们作为
设置的那三个参数存在问题
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim str As String = "Server=localhost;Port=3306;Database=springdb;Uid=root;Pwd=2342"
Using con As New MySqlConnection(str)
Dim query As String = "Insert Into springdata (full_name,rfid_tag,spring_size,operation_time,Date_Operation,
Time_Operation,Start_Time,End_Time,Qty_Needed) values
(@full_name, @rfid_tag, @spring_size, @operation_time,
@Date_Operation, @Time_Operation, @Start_Time, @End_Time, @Qty_Needed)
" 'Note:TextBox3 is the RFID number come from RFID arduino
Dim cm As New MySqlCommand(query, con)
cm.Parameters.Add(New MySqlParameter("@full_name", MySqlDbType.LongText)).Value = TextBox1.Text
cm.Parameters.Add(New MySqlParameter("@rfid_tag", MySqlDbType.LongText)).Value = TextBox2.Text
cm.Parameters.Add(New MySqlParameter("@spring_size", MySqlDbType.MediumText)).Value = TextBox3.Text
cm.Parameters.Add(New MySqlParameter("@operation_time", MySqlDbType.DateTime)).Value = DateTimePicker1.Value
cm.Parameters.Add(New MySqlParameter("@Date_Operation", MySqlDbType.Date)).Value = DateTimePicker2.Value
cm.Parameters.Add(New MySqlParameter("@Time_Operation", MySqlDbType.Time)).Value = Time_OperationTextBox.Text
cm.Parameters.Add(New MySqlParameter("@Start_Time", MySqlDbType.Time)).Value = Start_TimeTextBox.Text
cm.Parameters.Add(New MySqlParameter("@End_Time", MySqlDbType.Time)).Value = End_TimeTextBox.Text
cm.Parameters.Add(New MySqlParameter("@Qty_Needed", MySqlDbType.Int32)).Value = TextBox7.Text
con.Open()
cm.ExecuteNonQuery()
MessageBox.Show("success")
End Using
End Sub
我是这样想出来的:
Dim cm As New MySqlCommand(("Insert Into springdata (full_name,rfid_tag,spring_size,operation_time,Date_Operation,
Time_Operation,Start_Time,End_Time,Qty_Needed ) Values ('" & TextBox1.Text & "', '" & TextBox2.Text & "',
'" & ComboBox1.Text & "', '" & DateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss") & "',
'" & DateTimePicker2.Value.ToString("yyyy-MM-dd") & "', '" & Time_OperationTextBox.Text & "',
'" & Start_TimeTextBox.Text & "', '" & End_TimeTextBox.Text & "',
'" & TextBox7.Text & "')"), con)
不幸的是我无法用timespan,parse
解决它:-)
错误消息告诉您您给参数值的类型是 string
,但是您的 mySQL 方法需要一个 TimeSpan
- 您需要解析作为TimeSpan
输入到文本框中的字符串,然后将生成的TimeSpan变量而不是字符串传递给mySQL参数。
TimeSpan.Parse()
方法接受一个字符串作为输入,然后使用它从字符串中读取的值输出一个 TimeSpan 对象。
cm.Parameters.Add(New MySqlParameter("@Time_Operation", MySqlDbType.Time)).Value = TimeSpan.Parse(Time_OperationTextBox.Text)
cm.Parameters.Add(New MySqlParameter("@Start_Time", MySqlDbType.Time)).Value = TimeSpan.Parse(Start_TimeTextBox.Text)
cm.Parameters.Add(New MySqlParameter("@End_Time", MySqlDbType.Time)).Value = TimeSpan.Parse(End_TimeTextBox.Text)
当然,在此之前,您必须确保您的用户在文本框中输入的内容采用 TimeSpan 代码可以理解的有效格式(有关可接受格式的信息,请参阅下面的文档 link)。
文档:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.parse?view=netframework-4.7.2
我有 form2 可以在我的 table 中添加新数据然后我得到这个错误:
{"Only TimeSpan objects can be serialized by MySqlTimeSpan"}
当我删除这部分代码时它起作用了:
cm.Parameters.Add(New MySqlParameter("@Time_Operation", MySqlDbType.Time)).Value = Time_OperationTextBox.Text
cm.Parameters.Add(New MySqlParameter("@Start_Time", MySqlDbType.Time)).Value = Start_TimeTextBox.Text
cm.Parameters.Add(New MySqlParameter("@End_Time", MySqlDbType.Time)).Value = End_TimeTextBox.Text
这意味着日期时间工作正常,但我将它们作为
设置的那三个参数存在问题 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim str As String = "Server=localhost;Port=3306;Database=springdb;Uid=root;Pwd=2342"
Using con As New MySqlConnection(str)
Dim query As String = "Insert Into springdata (full_name,rfid_tag,spring_size,operation_time,Date_Operation,
Time_Operation,Start_Time,End_Time,Qty_Needed) values
(@full_name, @rfid_tag, @spring_size, @operation_time,
@Date_Operation, @Time_Operation, @Start_Time, @End_Time, @Qty_Needed)
" 'Note:TextBox3 is the RFID number come from RFID arduino
Dim cm As New MySqlCommand(query, con)
cm.Parameters.Add(New MySqlParameter("@full_name", MySqlDbType.LongText)).Value = TextBox1.Text
cm.Parameters.Add(New MySqlParameter("@rfid_tag", MySqlDbType.LongText)).Value = TextBox2.Text
cm.Parameters.Add(New MySqlParameter("@spring_size", MySqlDbType.MediumText)).Value = TextBox3.Text
cm.Parameters.Add(New MySqlParameter("@operation_time", MySqlDbType.DateTime)).Value = DateTimePicker1.Value
cm.Parameters.Add(New MySqlParameter("@Date_Operation", MySqlDbType.Date)).Value = DateTimePicker2.Value
cm.Parameters.Add(New MySqlParameter("@Time_Operation", MySqlDbType.Time)).Value = Time_OperationTextBox.Text
cm.Parameters.Add(New MySqlParameter("@Start_Time", MySqlDbType.Time)).Value = Start_TimeTextBox.Text
cm.Parameters.Add(New MySqlParameter("@End_Time", MySqlDbType.Time)).Value = End_TimeTextBox.Text
cm.Parameters.Add(New MySqlParameter("@Qty_Needed", MySqlDbType.Int32)).Value = TextBox7.Text
con.Open()
cm.ExecuteNonQuery()
MessageBox.Show("success")
End Using
End Sub
我是这样想出来的:
Dim cm As New MySqlCommand(("Insert Into springdata (full_name,rfid_tag,spring_size,operation_time,Date_Operation,
Time_Operation,Start_Time,End_Time,Qty_Needed ) Values ('" & TextBox1.Text & "', '" & TextBox2.Text & "',
'" & ComboBox1.Text & "', '" & DateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss") & "',
'" & DateTimePicker2.Value.ToString("yyyy-MM-dd") & "', '" & Time_OperationTextBox.Text & "',
'" & Start_TimeTextBox.Text & "', '" & End_TimeTextBox.Text & "',
'" & TextBox7.Text & "')"), con)
不幸的是我无法用timespan,parse
解决它:-)
错误消息告诉您您给参数值的类型是 string
,但是您的 mySQL 方法需要一个 TimeSpan
- 您需要解析作为TimeSpan
输入到文本框中的字符串,然后将生成的TimeSpan变量而不是字符串传递给mySQL参数。
TimeSpan.Parse()
方法接受一个字符串作为输入,然后使用它从字符串中读取的值输出一个 TimeSpan 对象。
cm.Parameters.Add(New MySqlParameter("@Time_Operation", MySqlDbType.Time)).Value = TimeSpan.Parse(Time_OperationTextBox.Text)
cm.Parameters.Add(New MySqlParameter("@Start_Time", MySqlDbType.Time)).Value = TimeSpan.Parse(Start_TimeTextBox.Text)
cm.Parameters.Add(New MySqlParameter("@End_Time", MySqlDbType.Time)).Value = TimeSpan.Parse(End_TimeTextBox.Text)
当然,在此之前,您必须确保您的用户在文本框中输入的内容采用 TimeSpan 代码可以理解的有效格式(有关可接受格式的信息,请参阅下面的文档 link)。
文档:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.parse?view=netframework-4.7.2