0

这是我所拥有的:。

Con.close()
Con.open()

Query ="Update Products Set QOH = QOH - '" & txtQoH.text & "' Where Prod_ID ='"& textbox1.text & "'"
Command.ExecuteNonQuery()
Con.Close().

好的,我正在尝试在购买一定数量的产品后更新手头的产品数量。所以我试过了,它不起作用,有人可以帮助我吗?

4

3 回答 3

1

你的代码有很多问题。让我开始列出它们。

  • 首先该字段QOH是数字对吗?所以不要尝试从数字中减去字符串(文本框周围的引号)
  • 其次,您编写了一个查询,但没有显示如何在命令中设置此文本的代码
  • 第三,应在需要时打开连接并在之后立即关闭/处置(Using 语句对此至关重要)
  • 第四,你如何检查你的用户是否输入了数值而不是假字符串?TryParse将有助于避免执行失败的查询
  • 第五,这是最重要的。不要连接字符串来构建 sql 命令。始终使用参数化查询

    Dim qty
    If Int32.TryParse(txtQoH.text, qty) Then
        MessageBox.Show("Invalid numeric quantity")
        Return
    End if
    Dim prodID
    If Int32.TryParse(textBox.text, prodID) Then
        MessageBox.Show("Invalid product ID")
        Return
    End if
    
    Query ="Update Products Set QOH = QOH - @qty Where Prod_ID = @prodID"
    Using con = new SqlConnection(.....constring here ....)
    Using cmd = new SqlCommand(con, Query)
       cmd.Parameters.AddWithValue("@qty", qty)
       cmd.Parameters.AddWithValue("@prodID", prodID)
       cmd.ExecuteNonQuery()
    End Using
    End Using
    
于 2013-10-16T19:04:49.260 回答
0

除非您遗漏了一些代码,否则我看不到您实际设置对象的CommandText位置Command

Query ="Update Products Set QOH = QOH - '" & txtQoH.text & "' Where Prod_ID ='"& textbox1.text & "'"

Command.CommandText = Query

Command.ExecuteNonQuery()

您还应该使用参数而不是字符串连接,但这是另一个问题......

于 2013-10-16T18:00:46.477 回答
0

作为第一个 U 尝试从一个整数列中减去一个文本项(您的 txtQoH.text)。(我认为)

其次,您的 Prod_ID 也是一个整数列。

尝试不带 ' 的查询

某事 像这样:

更新产品集 QOH=QOH - 2 其中 PROD_ID=12312312

或在您的代码中: Query ="Update Products Set QOH = QOH -" & txtQoH.text & " Where Prod_ID ="& textbox1.text & ""

我所看到的..

于 2013-10-16T18:05:31.760 回答