很多時候,我們在操作數據庫時需要大批量的進行存儲和更改數據庫的數據。如果每一次操作都進行連接數據庫,那將會浪費數據庫連接資源,增大資源開銷,降低數據庫的效率,爲了解決這個問題,數據庫普遍採用了連接池的技術。不過,今天我們要說的是如何在C#中實現大批量的插入數據庫數據。
string strConn="Data Source=.;Initial Catalog=HN_DingGou;Trusted_Connection=yes;"; //數據庫連接字符串
SqlBulkCopy sbc = new SqlBulkCopy(strConn);
假設現在有一個用戶表(Usres),裏面有三個字段:Id、Name、Age,我們需要先構建一個和數據表結構對應的DataTable對象:
DataTable dt=new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("Name");
dt.Columns.Add("Age");
假如我們現在已經封裝了一個用戶集合,作爲數據集
List<User> list=new List<User>()
{
new User(){Id=1,Name="張三",Age=10},
new User(){Id=2,Name="李四",Age=20},
new User(){Id=3,Name="王五",Age=30}
};
DataRow dr=dt.NewRow();
dr["Id"]=u.Id;
dr["Name"]=u.Name;
dr["Age"]=u.Age;
dt.Rows.Add(dr);
sbc.DestinationTableName = "Users"; //映射到數據庫的表名
sbc.ColumnMappings.Add("Id","Id");
sbc.ColumnMappings.Add("Name","Name");
sbc.ColumnMappings.Add("Age","Age");
sbc.WriteToServer(dt);