在事务

时间:2016-03-18 14:55:15

标签: c# sql-server vb.net

  1. 我将excel电子表格加载到数据表中
  2. 针对数据运行验证活动以检查问题
  3. 如果所有验证都通过,我将遍历数据表的每一行并执行带参数的UpdateTable存储过程
  4. 我需要执行此事务作为事务b / c我希望它是全部或全部上传,并且在回滚事务时出错
  5. 问题是数据表将有10,000到50,000行,并且每次迭代时cmd.executenonquery触发效率都很低,并且需要的时间比它应该的长。

     Dim db As New PGS.DBConnection
    
        Try
            db.BeginTransaction()
            For Each row As DataRow In dt.Rows
                Dim ParameterList(24) As SqlParameter
                ParameterList(0) = New SqlParameter("ProjectID", ProjectID)
                ParameterList(1) = New SqlParameter("Discipline", row("Disc"))
               .
               .
               .    
                ParameterList(24) = New SqlParameter("User", username)
    
                db.ExecuteQuery("EstimateInsert", ParameterList)
    
            Next
    
            db.CommitTransaction()
            Return "success"
        Catch ex As Exception
            db.RollbackTranscation()
            Dim db2 As New PGS.DBConnection
            db2.InsertError(ex.Message, ex.StackTrace, ex.Source, "Excel Estimate Processing", HttpContext.Current.User.Identity.Name)
            Return ex.Message
        End Try
    

    DBconnection对象处理使用函数来打开,执行和关闭所有sql的东西。在这种情况下,为它提供一个存储过程名称和一个SQL参数数组

    我不需要修改这个框架,如果我需要重写整个事情就好了。

    有没有办法运行批量大小500的设置并加快速度?如果您需要更多代码,请告诉我...谢谢!

1 个答案:

答案 0 :(得分:0)

错误处理的B / c我不能完全这样做,但我决定使用SQLBULK Copy