Vb.net 使用数据集结果执行非查询问题
我有一个有趣的项目,涉及VB.net winform应用程序。此应用程序使用表单的数据集。三个表将受班次日志(SL)、问题日志(PL)和服务请求(SR)的影响。如果用户更改(SL)上的日志日期,使(PL)不再与错误时间一致。我需要从(PL)和(SR)表中删除外键。我还没有测试过这个。在此之前,我有几个问题要问Vb.net 使用数据集结果执行非查询问题,vb.net,winforms,Vb.net,Winforms,我有一个有趣的项目,涉及VB.net winform应用程序。此应用程序使用表单的数据集。三个表将受班次日志(SL)、问题日志(PL)和服务请求(SR)的影响。如果用户更改(SL)上的日志日期,使(PL)不再与错误时间一致。我需要从(PL)和(SR)表中删除外键。我还没有测试过这个。在此之前,我有几个问题要问 如果第二个更新(SR)sql命令中没有要更新的记录,该怎么办 执行此操作后是否需要刷新数据集 Public Function UPD_PL_Check(ByVal Shift_Key
Public Function UPD_PL_Check(ByVal Shift_Key As String, ByVal SL_Begin As DateTime, SL_End As DateTime) As Integer
' Get rows from Laser Status Info
Dim query As String = "SELECT Status_Key FROM [dbo].[Laser_Status_Info] " &
" WHERE [Shift_FKey] = " & Shift_Key &
" AND [Err_time] NOT Between " & SL_Begin & " AND " & SL_End & ";"
Dim dt As DataTable = New DataTable()
Using conn As SqlConnection = New SqlConnection(My.Settings.LaserMaintLogConnectionString)
conn.Open()
Try
Dim da As SqlDataAdapter = New SqlDataAdapter(query, conn)
da.Fill(dt)
Catch ex As Exception
MessageBox.Show("Error occured! : " & ex.Message)
Finally
conn.Close()
End Try
End Using
Dim rowsAffected As Integer = dt?.Rows.Count
If rowsAffected = 0 Then Return rowsAffected
' Update the Problem log
For Each i In dt?.Rows
Using conn As SqlConnection = New SqlConnection(My.Settings.LaserMaintLogConnectionString)
conn.Open()
Dim Status_Key As String = dt.Rows(i)("Status_Key")
Try
Dim PL_query As String =
"UPDATE [dbo].[Laser_Status_Info] " &
" SET [Shift_FKey] = '' " &
" WHERE [Status_Key] = '" & Status_Key & "';"
Using Cmd As New SqlCommand(query, conn)
rowsAffected = Cmd.ExecuteNonQuery()
End Using
Catch ex As Exception
MessageBox.Show("Error occured! : " & ex.Message)
End Try
' Update Service request
Try
Dim PL_query As String =
"UPDATE [dbo].[Laser_Maint_Log] " &
" SET [SR_Shift_Key] = '' " &
" WHERE [SR_Status_Key] = '" & Status_Key & "';"
Using Cmd As New SqlCommand(query, conn)
rowsAffected = Cmd.ExecuteNonQuery()
End Using
Catch ex As Exception
MessageBox.Show("Error occured! : " & ex.Message)
End Try
conn.Close()
End Using
Next
Return rowsAffected
端函数
您确实需要将这些值作为SQL参数传递:使用字符串连接会导致失败,但是不要使用AddWithValue。正确的方法见以下文章:,和。解决问题的最佳方法是在sql数据库本身中创建一个函数。要回答您的问题,因为您使用的是非查询,所以即使没有数据,该命令仍将无错误地运行。