【发布时间】:2021-09-25 07:56:16
【问题描述】:
目前我正在做一个项目,一个人可以将 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 为它们分配名称,但我没有任何运气。如果您有任何建议,我将很高兴听到它!谢谢
【问题讨论】:
-
一些突出的东西 - 您不需要将参数名称放在 SQL 字符串内的引号中,因此只需使用 @Quantity 而不是 '@Quantity' 等。而且你正在传递VarChars 中的值,所以它们是字符串。您需要将它们作为正确的类型传入(特别是如果您要对它们进行一些数学运算)。希望 Quantity 字段不是 VarChar,否则您会遇到困难。
-
@Slugsie 感谢您回复我!我在写问题时重新输入了错误的代码(我在手机上,代码在桌面上),幸运的是,除了结尾是 .ToString 之外,数量是 INT32 格式。如果我把结尾也改成整数会有帮助吗?
-
如果数据库字段“数量”是数字类型,则将参数作为相同类型传入。不要将数字转换为字符串,为什么要这样做?你不能对字符串进行数学运算。
-
@Slugsie 有趣的注意事项;无论如何,mysql都会将它视为一个字符串;)
标签: mysql vb.net visual-studio