1,最常見的Executenonquery(返回影響的行數)sql是我的查詢插入語句,你可以換成你的!這種方式入庫,速度一般,大量數據時不提倡使用

1 /// <summary> 2 /// 通過table一個一個的插入 3 /// </summary> 4 /// <param name="table"></param> 5 public static void Executenonquery(DataTable table) 6 { 7 foreach (DataRow itemRow in table.Rows) 8 { 9 //if exists(select * from dbo.ID where ENG = '') 10 // begin 11 // return; 12 // end 13 //else 14 // begin 15 // INSERT INTO ID([ENG],[GB],[B5],[FILE],[MSG]) values('', '', '', '', '') 16 // end 17 string sql = "if exists(select * from " + table.TableName + " where ENG = '" + itemRow["ENG"].ToString() + "') "+ 18 " begin return; end else begin INSERT INTO " + table.TableName + "([ENG],[GB],[B5],[FILE],[MSG])" + 19 "VALUES('" + itemRow["ENG"].ToString() + "'" + 20 ",'" + itemRow["GB"].ToString() + "'" + 21 ",'" + itemRow["B5"].ToString() + "'" + 22 ",'" + itemRow["FILE"].ToString() + "'" + 23 ",'" + itemRow["MSG"].ToString() + "') end"; 24 using (SqlConnection sqlconn = new SqlConnection(connectString)) 25 { 26 sqlconn.Open(); 27 28 SqlCommand sqlcommand = new SqlCommand(sql, sqlconn); 29 sqlcommand.ExecuteNonQuery(); 30 sqlconn.Close(); 31 } 32 } 33 } 34 ————————————————
2,通過adapter入庫,這種入庫,起先,你需要先把datatable放入到dataset中然后進行入庫,這種方式主要是對庫中對應的表進行增刪改,方便使用(效率只比第一種方式好點)

1 /// <summary> 2 /// 通過adapter更新數據庫 3 /// </summary> 4 /// <param name="dataset"></param> 5 public static void DataadapterInssert(DataSet dataset) 6 { 7 if (dataset.Tables.Count > 0) 8 { 9 foreach (DataTable itemTable in dataset.Tables) 10 { 11 SqlCommand insertcommand = new SqlCommand("if exists(select * from " + itemTable.TableName + " where ENG = @ENG) begin return; end "+ 12 " else begin INSERT INTO " + itemTable.TableName + "([ENG],[GB],[B5],[FILE],[MSG])" + 13 "VALUES(@ENG, @GB,@B5,@FILE,@MSG) end", new SqlConnection(connectString)); 14 insertcommand.Parameters.Add("@ENG", SqlDbType.VarChar, 100, "ENG"); 15 insertcommand.Parameters.Add("@GB", SqlDbType.VarChar, 100, "GB"); 16 insertcommand.Parameters.Add("@B5", SqlDbType.VarChar, 200, "B5"); 17 insertcommand.Parameters.Add("@FILE", SqlDbType.VarChar, 200, "FILE"); 18 insertcommand.Parameters.Add("@MSG", SqlDbType.VarChar, 100, "MSG"); 19 20 SqlDataAdapter sqldataadapter = new SqlDataAdapter(); 21 sqldataadapter.InsertCommand = insertcommand; 22 23 sqldataadapter.Update(dataset, itemTable.TableName); 24 } 25 } 26 27 }
3,重頭戲都在最后,這種方式速度比前兩種快很多,適合用於大量數據插入更新,也將datatable放入dataset中然后通過遍歷,將datatable復制到數據庫中對應的表中,快速便捷
1 /// <summary> 2 /// 通過SqlBulkCopy復制table數據到數據庫 3 /// </summary> 4 /// <param name="dataset"></param> 5 public static void SqlbulkcopyInsert(DataSet dataset) 6 { 7 string ie; 8 if (dataset.Tables.Count > 0) 9 { 10 foreach (DataTable itemTable in dataset.Tables) 11 { 12 // SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectString, SqlBulkCopyOptions.KeepIdentity);//刪除自增ID插入原始數據
SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectString, SqlBulkCopyOptions.UseInternalTransaction);//批量事務處理 13 sqlbulkcopy.DestinationTableName = itemTable.TableName;//數據庫中的表名 14 for (int i = 0; i < itemTable.Rows.Count; i++) 15 { 16 ie = itemTable.Rows[i][2].ToString(); 17 } 18 sqlbulkcopy.WriteToServer(itemTable); 19 } 20 } 21 22 }
版權聲明:本文為CSDN博主「丘鳴山RM」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zyzBulus/article/details/77479272