通过获取列表视图中特定列中的值和我的数据库中的值的总和来更新数据库

Posted

技术标签:

【中文标题】通过获取列表视图中特定列中的值和我的数据库中的值的总和来更新数据库【英文标题】:Update database by getting the sum of a value in a specific column in listview and the value in my database 【发布时间】:2018-06-04 18:50:27 【问题描述】:

在我的数据库中,我有一个名为 [productlist] 的表,其中包含 (Name),(Stock) (Brand),(Size)

我有一个这样的列表视图:

|Qty| Name  | Brand  | Size  |
| 2 | Name 1| Brand 1| Size 1|
| 2 | Name 2| Brand 2| Size 2|    

我想要发生的是当我点击保存按钮时 我的列表视图中“数量”的值将添加到我的数据库中的“库存”值

(我的列表视图中的数量值)+(我的产品列表中的库存当前值)=(我的产品列表中的库存)

我不知道如何开始,所以我尝试了这段代码,但它没有工作:

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click


Dim MyConnection As New mysqlConnection
Dim MyTransaction As MySqlTransaction = Nothing

MyConnection.ConnectionString = "Server=localhost;Database=empiredb;Uid=root;"

    MyConnection.Open()
    MyTransaction = MyConnection.BeginTransaction


For Each item As ListViewItem In lvwProductPurchases.Items



Dim SQL As String = "update productlist set [Stock] = [Stock] + @0 where Name = @1 and Brand = @2 and Size = @3"

Dim CMD4 As New MySqlCommand

            CMD4.Connection = MyConnection
            CMD4.Transaction = MyTransaction
            CMD4.CommandText = SQL
            CMD4.Parameters.AddWithValue("@0", item.Text)
            CMD4.Parameters.AddWithValue("@1", item.SubItems(1).Text)
            CMD4.Parameters.AddWithValue("@2", item.SubItems(2).Text)
            CMD4.Parameters.AddWithValue("@3", item.SubItems(3).Text)
            CMD4.ExecuteNonQuery()
            CMD4.Dispose()
Next
  MsgBox("updated")
'try and catch i will put transactionrollback
End sub

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '[Stock] = [Stock] + '2' 附近使用正确的语法,其中 Name = 'kahoy' and Brand = 'Brand 1' and Size = 'm' at line 1

【问题讨论】:

你能告诉我们哪一行代码有问题吗?否则,帮助您的唯一方法是让 VBA 专家阅读本文,或者让某人在本地测试您的实际代码。 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '[Stock] = [Stock] + '2' 附近使用正确的语法,其中 Name = 'kahoy' and Brand = 'Brand 1' and Size = 'm' at line 1 我不知道如何在我的数据库中获取 stock 的值并将其放入我的更新查询中,以便我可以获得两个值的总和 我在下面给出了一个答案,它应该至少可以解决您的一个问题。在我们让您的代码正常工作之前,我很高兴与您一起迭代。 【参考方案1】:

我没有对 VB.net 做太多的工作,但我确实看到您的 MySQL 查询存在一个问题。在 MySQL 中,在列名周围放置方括号以转义/引用它们不是有效的语法。它在 SQL Server、Access 和其他一些数据库中有效。我建议对您的查询使用以下语法:

Dim SQL As String = "UPDATE productlist SET Stock = Stock + @0 " _
                    "WHERE Name = @1 AND Brand = @2 AND Size = @3"

【讨论】:

天哪,你明白了!就这么简单!?非常感谢!我希望下次我遇到问题时你能看到我的新问题。非常感谢! @sid 很高兴为您提供帮助。列名问题是唯一的主要问题表明您通常编写了好的代码。继续努力。

以上是关于通过获取列表视图中特定列中的值和我的数据库中的值的总和来更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

数据库表的列中的值的下拉列表-MVC实体框架

如何计算包含一组列中的值和 Pandas 数据框中另一列中的另一个值的行数?

在 SQL 中,我可以在另一列中获取与它们没有关联的特定值的列中的值吗?

Pandas 按行中的值和其他列中的值在行之间进行差异

如果另一列中的行包含列表中的项目,则计算一列中的值的总和

如何使用 CSVHelper 更新现有 CSV 文件中特定列中的值?