使用Vb.net更新SQL表

时间:2014-01-20 23:20:54

标签: sql vb.net sql-update sqlcommand

我有一个VB.net脚本需要将信息放入数据库中的表中。问题是它基于项Id,所以当我更新时,我不能只是插入行想要更新行,如果它已经存在。为此,我需要像这样使用Update命令:

mysqlCommand = New SQLCommand(UPDATE tableName Colum2=Newvalue ... Where Column1=ItemId)

然而,我想知道是否有任何事情告诉我是否在我运行时更新了一条线

mysqlcommand.ExecuteNonQuery()

这样我在运行此命令之前无需检查并在此更新命令和INSERT INTO命令之间切换

2 个答案:

答案 0 :(得分:1)

来自SqlCommand.ExecuteNonQuery @ MSDN的文档:

  

对连接执行Transact-SQL语句并返回受影响的行数。

所以你可以这样写:

Dim recordsAffected As Integer = mysqlcommand.ExecuteNonQuery()
If recordsAffected = 1 Then 'it worked

编辑:关于@ macoms01的答案,我的初衷是这样:

Select Case recordsAffected
  Case 0: 'it did not work
  Case 1: 'it worked
  Case Else: Throw New BadDataException
End Select

您永远无法确定在数据库上设置了唯一约束 - 期望错误的数据。

但后来我觉得它的目的可能太复杂了。

答案 1 :(得分:1)

我同意@Neolisk,但稍微改进可能是使用以下内容:

Dim recordsAffected As Integer = mysqlcommand.ExecuteNonQuery()
If recordsAffected > 0 Then 'it worked

或者这个:

Dim recordsAffected As Integer = mysqlcommand.ExecuteNonQuery()
If recordsAffected >= 1 Then 'it worked

只要Column1是唯一标识符,@ Neolisk的代码就会很好用。否则,您可能会更新多行。 “大于”/“大于或等于”运算符将捕获您正在更新多行的方案。