2014-04-23 107 views
0

在我的webmethod中,我正在更新数据库。但在调试光标时在cmd.ExecuteNonQuery()上转义。我的代码是,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 

有什么建议吗?

+0

到底什么异常,你收到? –

+0

你为什么要在'If'和'Else'块中复制代码?首先创建命令对象,在'If'和'Else'块中设置'CommandText',因为这是唯一不同的位,然后调用'ExecuteNonQuery'和'Return'。 – jmcilhinney

+0

至于你的问题,我们需要知道错误消息是肯定知道的,但是我猜测你的列名导致语法错误或者你的值导致数据类型不匹配。如果那些是“比特”列,那么你需要使用值1和0,而不是包含“真”和“假”的文本。 – jmcilhinney

回答

0

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

代替

 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