【问题标题】:How to INSERT Records in SQL Database and show the Number of Records Entered?如何在 SQL 数据库中插入记录并显示输入的记录数?
【发布时间】:2015-04-08 17:57:42
【问题描述】:

使用 VB .NET 我正在尝试INSERT INTO 一个 SQL DataTable 27019 记录。 INSERT INTO 进程在单击“插入按钮”时运行良好,但很耗时。因此,我希望能够通过在标签/文本框中显示它们的进度来查看输入记录的时间和时间。例如,当插入第一条记录时,文本应为 “已输入 1/27019 条记录”,对于下一条记录,应为 “已输入 2/27019 条记录” 等等。

提前致谢。

【问题讨论】:

  • 数据从何而来?我建议使用 SQLBulkCopy 类而不是 INSERT INTO .. 在循环中执行。
  • @Maciej Los 问题不在于插入命令功能。它工作正常。我想在标签或文本框中逐步显示到目前为止已经输入了多少条记录......输入了 1/27019 条记录......等等。
  • 当这部分数据插入数据库时​​,可能会导致数据库崩溃。所以,我的建议仍然有效;)
  • 在运行“循环”过程时更新 GUI(标签或文本框)有点棘手,see this article 获取有关一种方法的信息。
  • 顺便说一句,您可以捕获通过 SqlRowsCopied 事件插入的行:msdn.microsoft.com/en-us/library/…

标签: sql vb.net insert-into


【解决方案1】:

有几种方法可以做到这一点,但它们可能会增加总加载时间。您可以将插入拆分为多个批次并在每个完成的批次之后触发一个事件,但这显然需要更长的时间。或者,如果没有其他进程同时写入此表,您可以在开始插入之前触发一个单独的线程,该线程会查询插入了多少条记录。您可以使用 with(nolock) 进行此查询,也可以将事务级别设置为读取未提交。不能保证这些脏读总是会返回正确数量的行,但是,进度条可能就足够准确了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多