gpt4 book ai didi

c# - 在事务中执行 SQL 更新批处理

转载 作者:太空宇宙 更新时间:2023-11-03 15:24:00 24 4
gpt4 key购买 nike

  1. 我正在将 Excel 电子表格加载到数据表中
  2. 针对数据运行验证事件以检查问题
  3. 如果所有验证通过,我将遍历数据表的每一行并执行带参数的 UpdateTable 存储过程
  4. 我需要将此作为事务执行 b/c 我希望它是全有或全无上传,并在出错时回滚事务

问题是数据表将有 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 的集合并加快速度?让我知道您是否需要发布更多代码...谢谢!

最佳答案

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

关于c# - 在事务中执行 SQL 更新批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36087550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com