SqlBulkCopy批量資料插入
阿新 • • 發佈:2019-02-19
using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); //啟動一個事務。 SqlTransaction myTran = con.BeginTransaction(); //為事務建立一個命令,注意我們執行雙條命令,第一次執行當然成功。我們再執行一次,失敗。 //第三次我們改其中一個命令,另一個不改,這時候事務會報錯,這就是事務機制。 SqlCommand myCom = new SqlCommand(); try { DataTable dt= NCL.Data.ModelConvertHelper<Teacher>.ToDataTable(hspu); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(con,SqlBulkCopyOptions.Default, myTran)) { //一次性插入的資料條數 bulkCopy.BatchSize = 20; //插入的表名 bulkCopy.DestinationTableName = "[dbo].[HomeSchoolPublishUser]"; bulkCopy.WriteToServer(dt); } myTran.Commit(); issuccess = 1; } catch (Exception Ex) { myTran.Rollback(); } }
SqlBulkCopy還可以從SqlDataReader中獲取資料:
using (SqlConnection sourceConnection = new SqlConnection(connectionString)) { sourceConnection.Open(); // Get data from the source table as a SqlDataReader. SqlCommand commandSourceData = new SqlCommand( "SELECT ProductID, Name, " + "ProductNumber " + "FROM Production.Product;", sourceConnection); SqlDataReader reader = commandSourceData.ExecuteReader(); using (SqlConnection destinationConnection = new SqlConnection(connectionString)) { destinationConnection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection)) { bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"; try { bulkCopy.WriteToServer(reader); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { reader.Close(); } } } }