Vb.net 使用数据集结果执行非查询问题

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

我有一个有趣的项目,涉及VB.net winform应用程序。此应用程序使用表单的数据集。三个表将受班次日志(SL)、问题日志(PL)和服务请求(SR)的影响。如果用户更改(SL)上的日志日期,使(PL)不再与错误时间一致。我需要从(PL)和(SR)表中删除外键。我还没有测试过这个。在此之前,我有几个问题要问

  • 如果第二个更新(SR)sql命令中没有要更新的记录,该怎么办

  • 执行此操作后是否需要刷新数据集

     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数据库本身中创建一个函数。要回答您的问题,因为您使用的是非查询,所以即使没有数据,该命令仍将无错误地运行。