【发布时间】:2016-12-21 10:20:15
【问题描述】:
下面是我的课:
MsSql.cs:
public class MSSqlBLL
{
public static long RowsCopied { get; set; }
public long BulkCopy()
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = "dbo.Table1";
bulkCopy.BatchSize = 100;
bulkCopy.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
bulkCopy.NotifyAfter = 100;
try
{
bulkCopy.WriteToServer(reader);
}
return RowsCopied;
}
}
private static void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)
{
RowsCopied = RowsCopied + e.RowsCopied;
}
}
我正在从这个类调用 BulkCopy 函数,我想在受影响的记录变量中获取当前处理的记录。
例如:对于循环的每次迭代,我都希望在我的 affectedRows 变量中获取受影响的记录。
public class MySqlBLL
{
public void GetTotalRows()
{
int totalRecords = 500;
var table = "Table1";
for (int i = 0; i < totalRecords / 100; i++) //
{
query = "SELECT * FROM " + table + " LIMIT " + 0 + "," + 100;
var reader = Execute(conn, query);
long affectedRecords = msSql.BulkCopy();
reader.Close();
}
}
}
在上述方法中,我将逐块数据发送到 BulkCopy 方法以执行大容量复制,但是对于每个大容量复制,我想获取由大容量复制处理的记录数但问题是我得到在受影响的记录变量中为 0。
我想访问由 sql 批量复制处理的当前行。
【问题讨论】:
标签: c# .net ado.net sqlbulkcopy