首页 > 解决方案 > 如何使用 DataGridView 中的列来影响 MySQL

问题描述

目前我正在做一个项目,一个人可以将一个 excel 文件(包含库存数量)导入 DataGridView,然后将其导出到 MySQL 表中。导出到 MySQL 时,我想将文件中的库存数量从 MySQL 中的另一个表中取出(就像你在移动库存一样)。到目前为止,我已经对进口/出口业务进行了分类,但我无法弄清楚从表中扣除价值。

我目前正在尝试

For i As Integer = 0 To DataGridView1.Rows.Count - 2 Step +1
COMMAND = New MySqlCommand("UPDATE `test`.`new_table` SET `Quantity` = `Quantity` - '@Quantity' WHERE `ID`= ('@ID')", MysqlConn)
COMMAND.Parameters.Add("@ID", MySqlDbType.VarChar).Value = DataGridView1.Rows(i).Cells(0).Value.ToString()
COMMAND.Parameters.Add("@Quantity", MySqlDbType.VarChar).Value = DataGridView1.Rows(i).Cells("Quantity").Value.ToString()

COMMAND.ExecuteNonQuery()

Next

我不知道从这里去哪里。我也尝试通过 Dim 为它们分配名称,但我没有任何运气。如果您有任何建议,我将很高兴听到它!谢谢

标签: mysqlvb.netvisual-studio

解决方案


应该看起来更像:


Command = New MySqlCommand("UPDATE `test`.`new_table` SET `Quantity` = `Quantity` - @Quantity WHERE `ID`= @ID", MysqlConn)
Command.Parameters.AddWithValue("@ID", 0)
Command.Parameters.AddWithValue("@Quantity", 0)



For i = 0 To DataGridView1.Rows.Count - 2 

  Dim c = DataGridView1.Rows(i).Cells

  Command.Parameters("@ID").Value = Convert.ToInt32(c("ID").Value))
  Command.Parameters("@Quantity").Value = Convert.ToInt32(c("Quantity").Value))

  Command.ExecuteNonQuery()

Next

但实际上你的数据应该在一个类型化的数据表中,那么你的代码看起来会更好一些:

Command = New MySqlCommand("UPDATE `test`.`new_table` SET `Quantity` = `Quantity` - @Quantity WHERE `ID`= @ID", MysqlConn)
Command.Parameters.AddWithValue("@ID", 0)
Command.Parameters.AddWithValue("@Quantity", 0)



For Each r In someTable

  Command.Parameters("@ID").Value = r.ID
  Command.Parameters("@Quantity").Value = r.Quantity

  Command.ExecuteNonQuery()

Next

推荐阅读