static
void
SqlBulkCopyTest(DataTable dt)
{
using
(SqlConnection conn =
new
SqlConnection(
"Server=localhost;DataBase=B2B;Uid=sa;Pwd=ll;"
))
{
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
using
(SqlBulkCopy bulkCoye =
new
SqlBulkCopy(conn
, SqlBulkCopyOptions.Default
, tran))
{
bulkCoye.DestinationTableName =
"song"
;
//设定超时时间
bulkCoye.BulkCopyTimeout = 10;
//每批插入的行数(如果入库失败,只是本批次事物回滚,如果想全部回滚还需要加参数SqlTransaction)
bulkCoye.BatchSize = 2;
//在上面定义的批次里,每准备插入1条数据时,呼叫相应的事件(这时只是准备,没有真正入库)
bulkCoye.NotifyAfter = 1;
bulkCoye.SqlRowsCopied +=
new
SqlRowsCopiedEventHandler(SqlRowsCopied);
try
{
bulkCoye.WriteToServer(dt);
}
catch
(Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
static
void
SqlRowsCopied(
object
sender, SqlRowsCopiedEventArgs e)
{
Console.WriteLine(
"入库行数:"
+ e.RowsCopied);
}