#region 批量插入數據到數據庫
DateTime startTime;
private bool SqlBulkCopy(DataTable dt)
{
try
{
startTime = DateTime.Now;
//數據批量導入sqlserver,創建實例 SqlBulkCopyOptions.UseInternalTransaction採用事務 複製失敗自動回滾
System.Data.SqlClient.SqlBulkCopy sqlbulk = new System.Data.SqlClient.SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConStr"], SqlBulkCopyOptions.UseInternalTransaction);
sqlbulk.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnRowsCopied); //訂閱複製完成後的方法,參數是 sqlbulk.NotifyAfter的值
sqlbulk.NotifyAfter = dt.Rows.Count;
//目標數據庫表名
sqlbulk.DestinationTableName = "T_TempUpLoadTC";
//數據集字段索引與數據庫字段索引映射
sqlbulk.ColumnMappings.Add(0, "userName");
sqlbulk.ColumnMappings.Add(1, "JiFenCount");
//導入
sqlbulk.WriteToServer(dt);
sqlbulk.Close();
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
dt.Dispose();
}
}
//複製完成後的處理事件
private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args)
{
lblCounter.Text += args.RowsCopied.ToString() + " 條記錄已導入";
TimeSpan copyTime = DateTime.Now - startTime;
lblCounter.Text += " 花費時間:" + copyTime.Seconds.ToString() + "." +
copyTime.Milliseconds.ToString() + " 秒";
}
#endregion
c#批量插入數據到數據庫【支持事務操作】
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.