【问题标题】:cmd.ExecuteNonQuery() is not allowedcmd.ExecuteNonQuery() 不允许
【发布时间】:2025-12-14 08:30:02
【问题描述】:

在我的网络方法中,我正在更新数据库。但是在调试 cmd.ExecuteNonQuery() 上的光标转义时。我的代码是,

        If tbl = "All" Then
            cmd = New SqlCommand("update setbool set pos_val='False',valid_rp='False',Pos_save='False'", conn)
            cmd.ExecuteNonQuery()
            Return Nothing
        Else
            cmd = New SqlCommand("update setbool set " & tbl & "='True'", conn)
            cmd.ExecuteNonQuery()
            Return Nothing
        End If

有什么建议吗?

【问题讨论】:

  • 您到底收到了什么异常?
  • 为什么要在 IfElse 块中复制代码?首先创建命令对象,在IfElse 块中设置CommandText,因为这是唯一不同的位,然后调用ExecuteNonQueryReturn
  • 至于您的问题,我们需要确切知道错误消息是什么,但我猜测您的列名导致语法错误或您的值导致数据类型不匹配。如果这些是 bit 列,那么您需要使用值 1 和 0,而不是包含“True”和“False”的文本。
  • 每当我调试时,调试点在 cmd.Executenonquery 处转义,这意味着数据库没有得到更新

标签: vb.net webmethod executenonquery


【解决方案1】:

我找到了自己的解决方案。

而不是

        cmd = New SqlCommand("update setbool set pos_val='False',valid_rp='False',Pos_save='False'", conn)
        cmd.ExecuteNonQuery()
        Return Nothing

我变了

            Using cmd1 As New SqlCommand("update setbool set pos_val='False',valid_rp='False',Pos_save='False'")
                cmd1.CommandType = CommandType.Text
                cmd1.Connection = conn
                conn.Open()
                cmd1.ExecuteNonQuery()
                conn.Close()
            End Using
            Return Nothing

【讨论】: