VB.NET cmd.CommandText 无法与 sql 更新一起正常工作
Posted
技术标签:
【中文标题】VB.NET cmd.CommandText 无法与 sql 更新一起正常工作【英文标题】:VB.NET cmd.CommandText is not working properly with sql update 【发布时间】:2021-05-25 09:35:43 【问题描述】:这是我的减法按钮,它只会减去我数据库中的数量,但数学逻辑是错误的,例如,如果我说 12-2 它会将数量更新为 6
If con.State = ConnectionState.Open Then
con.Close()
End If
con.Open()
Try
If con.State = ConnectionState.Open Then
con.Close()
End If
con.Open()
cmd = con.CreateCommand()
cmd.CommandType = CommandType.Text
cmd.CommandText = "UPDATE tablekongbago SET qty = qty + 2 WHERE Id = 2"
cmd.CommandType = "UPDATE tablekongbago SET qty = (qty - 2) WHERE Id = 2"
cmd.CommandText = "update tablekongbago set qty = qty - " + Convert.ToInt32(qtybox1.Text) + "WHERE Id = 2"
cmd.CommandText = "UPDATE tablekongbago SET qty = qty - 2 WHERE Id = " & 2 & ""
cmd.CommandText = "UPDATE tablekongbago SET qty = qty - " + Convert.ToInt32(2) + " WHERE Id = 2"
这 5 个“cmd.CommandText 中的任何一个都不能正常工作,它会加减,但它更新到数据库的数量是错误的,它会产生错误的输出,例如 (12 - 2 = 6)
cmd.ExecuteNonQuery()
Dim dt As New DataTable()
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
Dim dr As SqlClient.SqlDataReader
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
While dr.Read
qty = dr.GetInt32(3).ToString()
End While
Catch ex As Exception
End Try
MessageBox.Show("Subtracted Successfully")
【问题讨论】:
你的 sql 后端是什么(mysql、Oracle、Sql Server 等)?请注意,SQLUPDATE
DML 语句的输出是更新的记录数,而不是您的数量。
我在 Visual Studio 中使用 MySQL mdf 数据库,使用 cmd.CommandText = "",我想更改数量,“UPDATE table SET qty = 12 WHERE Id = 2”有效,但“UPDATE table SET qty = qty -2 WHERE Id =2" 没有,我的数量是 12,但是每当我使用“UPDATE table SET qty = qty -2 WHERE Id =2”时,数量就会变为 6。
如果有,能否检查table
上是否有任何触发器(特别是UPDATE
一个)?
“我正在使用 MySQL mdf 数据库”。嗯?不你不是。如果您使用的是 MDF 数据文件,那么那是 SQL Server,而不是 MySQL。如果SqlClient
提供程序完全有效,那么您必须使用 SQL Server。
【参考方案1】:
您首先在命令上调用ExecuteNonQuery
,这将从当前值中减去 2。接下来,您在其SelectCommand
中使用相同的命令创建一个数据适配器,然后调用Fill
,它将再次执行相同的命令并减去另一个2。最后,您再次在同一命令上调用ExecuteReader
,这将减去另一个 2. 告诉我,(12 - 2 - 2 - 2) 是什么?该命令完全按照应有的方式工作。你只是无缘无故地执行了两次。
在那种情况下,您为什么要使用数据适配器和数据读取器?任何地方都没有SELECT
语句,Fill
和ExecuteReader
都用于执行查询,即SELECT
语句。
【讨论】:
非常感谢,现在它可以正常工作了,我只是注释掉了,我不太明白你说的那部分代码,我只是从我的 datagridview 函数中复制了该代码以上是关于VB.NET cmd.CommandText 无法与 sql 更新一起正常工作的主要内容,如果未能解决你的问题,请参考以下文章
PDF 生成后无法打开 (vb.net) (asp.net)