尝试使用参数将datagridview行集合插入数据库时出错



我有一个带有datagridview的表单,它在使用条形码扫描仪扫描后显示数据库表中的列,然后显示的数据应该插入到另一个表中,其中包含表单中的其他信息,如组合框文本和标签文本,但我一直收到错误。这是我使用的代码,它适用于其他表单,但不适用于此表单,我无法找出问题所在。

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

这是一条异常消息,错误出现在ExecuteNonQuery行,并且我的所有数据网格列名都是正确的。这是数据网格视图,这是我试图插入的数据库表。

本例中的具体问题几乎可以肯定是bundle#列名。任何包含空格或其他特殊字符的标识符都需要转义。MySQL的标准是使用graves,而微软的标准是用括号。我相信MySQL ADO.NET提供程序(Connector/NET(支持以下两者:

cm = New MySqlCommand("insert into tblsewingreport (tsnumber, `bundle#`, itemcode, ...

或:

cm = New MySqlCommand("insert into tblsewingreport (tsnumber, [bundle#], itemcode, ...

相关内容

  • 没有找到相关文章

最新更新