通过获取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 中的另一个数据框进行比较