我一直在摸索我的方式虽然用SQL数据库访问编写了我的第一个应用程序,并且我使用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()
我还没有解决比这更复杂的事情,但我愿意学习。我现在需要做的是获取当前STAFF记录的id,看看它是否已经在STAFFMANAGERS关系表中设置,并使用来自MANAGERS表的刚刚选择的id更新它,或者如果管理器不是,则创建记录以前设定。此时,staff和manager id都存储在表单变量中,因此可以插入到任何SQL命令中。
我已经看到了可以这样做的各种方法,比如在SQLCmd.commandtext中添加多行(虽然我不确定格式是否这样)但是我不知道这是不是一个万无一失的解决方案或容易出现问题,或者它是否会起作用。
如果没有从我目前的经历中拉得太远(或者给我一个更复杂的东西的深入解释),我怎样才能最好地完成这个?
答案 0 :(得分:0)
我不确定这是否会有所帮助,但我的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
答案 1 :(得分:0)
也许你需要MERGE statement。