我有一个带有datagridview的表单,该表单在使用条形码扫描仪扫描后显示db表中的列,然后应该将显示的数据与来自组合表文本和标签文本的其他信息一起插入到另一个表中,但是我不断出现错误。这是我使用的代码,可以在其他形式上使用,但不适用于这种形式,我无法找出问题所在。
Sub SewingReport()
Try
Dim sdate As String = Now.ToString("yyyy-MM-dd")
If MsgBox("Are you sure you want to save this record to Sewing Report?", vbYesNo + vbQuestion) = vbYes Then
cn.Open()
cm = Nothing
cm = New MySqlCommand("insert into tblsewingreport (tsnumber, bundle#, itemcode, operation, color, size, quantity, price, amount, sdate, employee) values(@tsnumber, @bundle#, @itemcode, @operation, @color, @size, @quantity, @price, @amount, @sdate, @employee)", cn)
For i = 0 To dgvRecord.Rows.Count - 1
cm.Parameters.Clear()
cn.Close()
cn.Open()
cm.Parameters.AddWithValue("@tsnumber", lblInvoice.Text)
cm.Parameters.AddWithValue("@bundle#", dgvRecord.Rows(i).Cells("Column6").Value.ToString)
cm.Parameters.AddWithValue("@itemcode", dgvRecord.Rows(i).Cells("Column4").Value.ToString)
cm.Parameters.AddWithValue("@operation", dgvRecord.Rows(i).Cells("Column5").Value.ToString)
cm.Parameters.AddWithValue("@color", dgvRecord.Rows(i).Cells("Column7").Value.ToString)
cm.Parameters.AddWithValue("@size", dgvRecord.Rows(i).Cells("Column8").Value.ToString)
cm.Parameters.AddWithValue("@quantity", CDec(dgvRecord.Rows(i).Cells("Column9").Value.ToString))
cm.Parameters.AddWithValue("@price", CDec(dgvRecord.Rows(i).Cells("Column10").Value.ToString))
cm.Parameters.AddWithValue("@amount", CDec(dgvRecord.Rows(i).Cells("Column11").Value.ToString))
cm.Parameters.AddWithValue("@sdate", sdate)
cm.Parameters.AddWithValue("@employee", ComboBox1.Text)
cm.ExecuteNonQuery()
cn.Close()
Next
MinusStockQty()
MsgBox("Record has been successfully saved to Sewing Report.", vbInformation)
lblInvoice.Text = GetInvoiceNo()
txtSearch.Clear()
txtSearch.Focus()
End If
Catch ex As Exception
cn.Close()
MsgBox(ex.ToString)
End Try
End Sub
这是exception消息,该错误引发ExecuteNonQuery行,并且我所有的datagrid列名都是正确的。这是datagridview,这是我的database table我正在尝试插入的内容。
答案 0 :(得分:0)
在这种情况下,几乎可以肯定的是bundle#
列名。任何包含空格或其他特殊字符的标识符都必须转义。 MySQL标准是使用坟墓,而Microsoft标准是使用括号。我相信MySQL ADO.NET提供程序(连接器/网络)同时支持:
cm = New MySqlCommand("insert into tblsewingreport (tsnumber, `bundle#`, itemcode, ...
或:
cm = New MySqlCommand("insert into tblsewingreport (tsnumber, [bundle#], itemcode, ...