我正在尝试将DataTable复制到Server上的目标表中。我使用以下代码。我知道bulkCopy.WriteToServer()是一个原子(全部或不存在)函数。但是,当什么都没有被复制,我想知道!
try
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn.ConnectionString, SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.UseInternalTransaction))
{
bulkCopy.DestinationTableName = "MyDestinationTable";
bulkCopy.WriteToServer(dt);
convertSuccess = true;
}
}
catch
{
convertSuccess = false;
}我已经看到没有任何东西被复制到"MyDestinationTable“中,但是我没有意识到,因为我的convertSuccess标志返回了true。有没有办法知道bulkCopy是否已经完成了它的工作?
发布于 2015-01-21 14:27:22
可以指定https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.notifyafter(v=vs.110).aspx属性,然后在x行数之后处理https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.sqlrowscopied(v=vs.110).aspx事件。
static void Main() {
try {
using(SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn.ConnectionString, SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.UseInternalTransaction)) {
//Event handling
bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
bulkCopy.NotifyAfter = 50; //Put your rowcount here
bulkCopy.DestinationTableName = "MyDestinationTable";
bulkCopy.WriteToServer(dt);
convertSuccess = true;
}
} catch {
convertSuccess = false;
}
}
private static void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e) {
Console.WriteLine("Copied {0} so far...", e.RowsCopied);
}https://stackoverflow.com/questions/28069060
复制相似问题