我有一个VB.net脚本需要将信息放入数据库中的表中。问题是它基于项Id,所以当我更新时,我不能只是插入行想要更新行,如果它已经存在。为此,我需要像这样使用Update命令:
mysqlCommand = New SQLCommand(UPDATE tableName Colum2=Newvalue ... Where Column1=ItemId)
然而,我想知道是否有任何事情告诉我是否在我运行时更新了一条线
mysqlcommand.ExecuteNonQuery()
这样我在运行此命令之前无需检查并在此更新命令和INSERT INTO命令之间切换
答案 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的代码就会很好用。否则,您可能会更新多行。 “大于”/“大于或等于”运算符将捕获您正在更新多行的方案。