获取每次批量插入操作插入的行数
Get the number of rows inserted in each bulk insert operation
我正在使用批量插入操作代码将数据从 DataTable
插入到 SQL Table。如何获取每次批量操作时插入的行数?
假设我最初在 SQL table 中有 25 行数据,现在在 DataTable
中有 10 行数据要通过批量插入操作插入。我怎样才能插入行?
var table = "TBL_FINANCE";
using (var conn = new SqlConnection("Server=QD2AOUR;Database=FINANCE; uid=sa; Password=neptune; Initial Catalog=FINANCE;Persist Security Info=True;Trusted_Connection=Yes;Integrated Security=SSPI; pooling=false"))
{
var bulkCopy = new SqlBulkCopy(conn);
bulkCopy.DestinationTableName = table;
conn.Open();
var schema = conn.GetSchema("Columns", new[] { null, null, table, null });
foreach (DataColumn sourceColumn in dt.Columns)
{
foreach (DataRow row in schema.Rows)
{
if (string.Equals(sourceColumn.ColumnName, (string)row["COLUMN_NAME"], StringComparison.OrdinalIgnoreCase))
{
bulkCopy.ColumnMappings.Add(sourceColumn.ColumnName, (string)row["COLUMN_NAME"]);
break;
}
}
}
try
{
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
lblMessage.Text = "Error with Insert Operation...";
div_message.Visible = true;
div_message.Attributes.Add("class", "callout callout-danger");
return;
}
finally
{
bulkCopy.Close();
}
}
SqlBulkCopy 支持通知
using (var sqlBulk = new SqlBulkCopy(_connectionString))
{
sqlBulk.NotifyAfter = 1000;
sqlBulk.SqlRowsCopied += (sender, eventArgs) => Console.WriteLine("Wrote " + eventArgs.RowsCopied + " records.");
sqlBulk.DestinationTableName = "Employees";
sqlBulk.WriteToServer(dt);
}
我正在使用批量插入操作代码将数据从 DataTable
插入到 SQL Table。如何获取每次批量操作时插入的行数?
假设我最初在 SQL table 中有 25 行数据,现在在 DataTable
中有 10 行数据要通过批量插入操作插入。我怎样才能插入行?
var table = "TBL_FINANCE";
using (var conn = new SqlConnection("Server=QD2AOUR;Database=FINANCE; uid=sa; Password=neptune; Initial Catalog=FINANCE;Persist Security Info=True;Trusted_Connection=Yes;Integrated Security=SSPI; pooling=false"))
{
var bulkCopy = new SqlBulkCopy(conn);
bulkCopy.DestinationTableName = table;
conn.Open();
var schema = conn.GetSchema("Columns", new[] { null, null, table, null });
foreach (DataColumn sourceColumn in dt.Columns)
{
foreach (DataRow row in schema.Rows)
{
if (string.Equals(sourceColumn.ColumnName, (string)row["COLUMN_NAME"], StringComparison.OrdinalIgnoreCase))
{
bulkCopy.ColumnMappings.Add(sourceColumn.ColumnName, (string)row["COLUMN_NAME"]);
break;
}
}
}
try
{
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
lblMessage.Text = "Error with Insert Operation...";
div_message.Visible = true;
div_message.Attributes.Add("class", "callout callout-danger");
return;
}
finally
{
bulkCopy.Close();
}
}
SqlBulkCopy 支持通知
using (var sqlBulk = new SqlBulkCopy(_connectionString))
{
sqlBulk.NotifyAfter = 1000;
sqlBulk.SqlRowsCopied += (sender, eventArgs) => Console.WriteLine("Wrote " + eventArgs.RowsCopied + " records.");
sqlBulk.DestinationTableName = "Employees";
sqlBulk.WriteToServer(dt);
}