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();
}
}
}
}