【问题标题】:How to find if where statement is occurred in the code如何查找代码中是否出现 where 语句
【发布时间】:2015-03-06 16:08:44
【问题描述】:

不知道执行时代码中是否出现了where语句:

Dim cmd2 As SqlCommand = New SqlCommand("
                           UPDATE ShTb 
                           SET Email=@EmailAddress, 
                           Temp=@temp, 
                           TEL=@telnum, 
                           TempTime=@temptime 
                           WHERE ShID=@SharjID", con1)

cmd2.Parameters.AddWithValue("@EmailAddress", EmailAddress)
cmd2.Parameters.AddWithValue("@SharjID", SharjID)
cmd2.Parameters.AddWithValue("@temp", temp)
cmd2.Parameters.AddWithValue("@telnum", telnum)
cmd2.Parameters.AddWithValue("@temptime", temptime)

con1.Open()
cmd2.ExecuteNonQuery()
con1.Close()

【问题讨论】:

  • "where statement" is ocured 是什么意思?
  • 您应该查看Can we stop using AddWithValue() already? 并停止使用.AddWithValue() - 它可能会导致意想不到和令人惊讶的结果...
  • 我的意思是当ShID=@SharjID 不正确时,我想在标签上显示一条消息。
  • 你不是在比较ShID=@SharjID那么你认为它会如何返回true?您正在用 4 列更新表,其中 ShID=@SharjID
  • 我比较了,但我没有在这里输入。

标签: sql asp.net sql-server vb.net


【解决方案1】:

我假设您想知道更新是否影响了任何行。 你可以通过检查ExecuteNonQuery的返回值来做到这一点

Dim rowsEffected = cmd2.ExecuteNonQuery()
if rowsEffected > 0 Then
  'One or more rows were changed
End if

【讨论】:

    【解决方案2】:

    ExecuteNonQuery 返回受命令影响的行数。

    对于UPDATEINSERTDELETE 语句,返回值是受命令影响的行数。 (MSDN)

    dim r1 as int
    
    r1=cmd2.ExecuteNonQuery()
    
    If r1 > 0 --one, or more rows were affected....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2020-01-09
      • 2020-01-28
      • 2012-07-12
      • 2018-03-06
      相关资源
      最近更新 更多