Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在VB.NET中更新或插入SQL记录的最佳(简单)方法是什么_Sql_Sql Server_Vb.net_Sqlcommand_Upsert - Fatal编程技术网

什么';在VB.NET中更新或插入SQL记录的最佳(简单)方法是什么

什么';在VB.NET中更新或插入SQL记录的最佳(简单)方法是什么,sql,sql-server,vb.net,sqlcommand,upsert,Sql,Sql Server,Vb.net,Sqlcommand,Upsert,我一直在摸索着用SQL database access编写我的第一个应用程序,我一直在使用system.data.sqlclient.sqlcommand处理单个命令,并执行类似以下操作: SQLCmd.CommandText = ("DELETE from ContactRelationships WHERE ID = 'someid'") SQLCmd.ExecuteNonQuery() 或将更改存储在表单上,然后保存或取消更改: Dim x As New SqlCommand("DELE

我一直在摸索着用SQL database access编写我的第一个应用程序,我一直在使用system.data.sqlclient.sqlcommand处理单个命令,并执行类似以下操作:

SQLCmd.CommandText = ("DELETE from ContactRelationships WHERE ID = 'someid'")
SQLCmd.ExecuteNonQuery()
或将更改存储在表单上,然后保存或取消更改:

Dim x As New SqlCommand("DELETE from SharedDataLocations where Location = @Loc and UserID= @UID ;--", cnn)
        x.Parameters.Add("@Loc", SqlDbType.NVarChar, 300).Value = strRemDLoc
        x.Parameters.Add("@UID", SqlDbType.Int).Value = UserID
        PendingSQLChanges.Add(x)
'followed later by
For x = 0 To PendingSQLChanges.Count - 1
            PendingSQLChanges(x).ExecuteNonQuery()
        Next
        PendingSQLChanges.Clear()
我还没有解决过比这更复杂的问题,但我愿意学习。我现在需要做的是获取当前员工记录的id,查看它是否已在StaffManager关系表中设置,并使用刚刚从manager表中选择的id进行更新,或者如果以前未设置经理,则创建该记录。此时,staff和manager ID都存储在表单变量中,因此可以直接插入到任何SQL命令中

我见过各种方法可以做到这一点,比如在SQLCmd.commandtext中添加多行(虽然我不确定其格式),但我不知道这是一个万无一失的解决方案,还是容易出现问题,或者它是否可以工作


如果不把我目前的经验扩展太多(或者给我一个更复杂的东西的深入解释),我如何才能最好地完成这一点?

我不确定这是否会有帮助,但是,我的VB.NET SQL代码中也有类似的东西。我所做的是使用IF-THEN语句检查记录是否存在。如果没有记录,则将使用新的UID插入该记录,但如果UID已存在,则将进行更新

Public Class YourForm
     Private UniqueID as Integer

Private Sub 
    If AddRecord Then 
        SQLCmd.CommandText = "INSERT into YourTableName (YourColumnName1,YourColumnName2) values (" & _
        "'" & YourTextBox.Text & "')")
        Else
           RunSql ("Update YourTableName set YourColumnName='" & YourTextBox.Text & "')" & _
         " where YourUID=" & UniqueID)
End Sub
End Class

也许您需要。

看看SQL存储过程。