想要使用带有SQLBulkCopy的进度条

时间:2014-10-22 19:11:59

标签: vb.net progress-bar sqlbulkcopy

关于我正在使用VB.NET开发的应用程序的问题。我想使用进度条显示我的SqlBulkCopy程序的进度。我查了一些方法,并想知道在AddHandler程序中是否使用SqlBulkCopy,使用SqlRowsCopied是计算进度的可能方法。如果是这样,我将如何实现这一点,因为我对VB.NET中的进度条有点新意。让我知道如果有更好的解决方法,所有答案都非常感谢!谢谢!只是我的SqlBulkCopy被执行的一小段。

(仅供参考:没有显示我尝试使用进度条的任何内容)

进度条名为toolStripProgressBar

Dim copy As New SqlBulkCopy(con)

For Each dc As DataColumn In dtDataCopy.Columns
    copy.ColumnMappings.Add(dc.ColumnName, dc.ColumnName)
Next

copy.DestinationTableName = TableName
copy.BulkCopyTimeout = 360 
copy.BatchSize = 1000
copy.WriteToServer(dtDataCopy)
copy.Close()

1 个答案:

答案 0 :(得分:1)

正如文档所述,SqlRowsCopied事件取决于NotifyAfter属性,而不是BatchSize属性。您可以将Maximum的{​​{1}}设置为总行数,将ProgressBar属性设置为与Step值相同。每次引发NotifyAfter事件时,您都会在SqlRowsCopied上调用PerformStep,它将按照已复制的行数递增。

或者,您只需将ProgressBar值分配给e.RowsCopied的{​​{1}}属性即可。有关该事件的MSDN文档中提供了一个代码示例。希望您在发布此问题之前咨询过该文档。