通过获取listview中特定列中的值与数据库中的值之和来更新数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过获取listview中特定列中的值与数据库中的值之和来更新数据库相关的知识,希望对你有一定的参考价值。

在我的数据库中,我有一个名为[productlist]的表,里面是(名称),(股票)(品牌),(大小)

我有这样的列表视图:

|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',Brand ='Brand 1',Size ='m'在行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"

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

SQL 删除行,其中一个值与 DIFFERENT 列中的值匹配

在python中,我如何对一列中每个值与另一列中的值发生的次数(多少行)建立矩阵?

如何将 pyspark 数据框列中的值与 pyspark 中的另一个数据框进行比较

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

将递增值与其他值一起添加到 Oracle 数据库中的列中

如何从 MS ACCESS 数据库中的特定行和列中获取值?