使用Vb.net更新SQL表

问题描述:

我有一个VB.net脚本,需要将信息放入数据库的表中。值得注意的是它基于一个项目ID,所以当我更新时,我不能只插入行想要更新行,如果它已经存在。为此,我需要使用update命令,如下所示:使用Vb.net更新SQL表

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

但是我想知道是否有反正告诉羯羊或不是一条线进行了更新,当我运行

mysqlcommand.ExecuteNonQuery() 

让我做不需要检查我运行这个命令,这更新的命令和INSERT之间切换到命令

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 

你永远不可能确保在数据库上设置了唯一的约束条件 - 期望得到不好的数据。

但后来我认为它可能会太复杂,因为它的目的。

我同意@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 

@ Neolisk的代码将工作的伟大,只要列1是唯一标识符。否则,您可能正在更新多行。 “大于”/“大于或等于”运算符将捕获您要更新多行的场景。

+0

+1。谢谢你的评论。我更新了我的答案,希望现在看起来更好。 – Neolisk

+1

@Neilisk - 我认为这就是你要做的。只是想为DoNotArrestMe指出,以防万一他不知道。由于您是最初的“回应者”,我“赞成”您的回答。 – macoms01