發(fā)文章
發(fā)文工具
撰寫
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
我用的是SqlBulkCopy
public void ExecuteTransactionScopeInsertEx(DataTable dt, string tableName) { using (SqlBulkCopy sbc = new SqlBulkCopy(Common.ConnStr, SqlBulkCopyOptions.UseInternalTransaction)) { //服務(wù)器上目標(biāo)表的名稱 sbc.DestinationTableName = tableName; sbc.BatchSize = dt.Rows.Count; sbc.BulkCopyTimeout = 600; for (int i = 0, l = dt.Columns.Count; i < l; i++) { //列映射定義數(shù)據(jù)源中的列和目標(biāo)表中的列之間的關(guān)系 sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); } sbc.WriteToServer(dt); } }
如果表的列名與數(shù)據(jù)庫的列名不能一一對應(yīng),則需重載上述方法
public void ExecuteTransactionScopeInsertEx(DataTable dt, string tableName, string[] dbComlunName) { using (SqlBulkCopy sbc = new SqlBulkCopy(Common.ConnStr, SqlBulkCopyOptions.UseInternalTransaction)) { //服務(wù)器上目標(biāo)表的名稱 sbc.DestinationTableName = tableName; sbc.BatchSize = dt.Rows.Count; sbc.BulkCopyTimeout = 600; for (int i = 0, l = dt.Columns.Count; i < l; i++) { //列映射定義數(shù)據(jù)源中的列和目標(biāo)表中的列之間的關(guān)系 sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dbComlunName[i]); } sbc.WriteToServer(dt); } }
如果需要自己指定控件的哪些列對應(yīng)數(shù)據(jù)庫的哪些列,則又需要重載
public void ExecuteTransactionScopeInsertEx(DataTable dt, string tableName, string[] displayName, string[] dbComlunName) { using (SqlBulkCopy sbc = new SqlBulkCopy(Common.ConnStr, SqlBulkCopyOptions.UseInternalTransaction)) { //服務(wù)器上目標(biāo)表的名稱 sbc.DestinationTableName = tableName; sbc.BatchSize = dt.Rows.Count; sbc.BulkCopyTimeout = 600; for (int i = 0, l = dt.Columns.Count; i < l; i++) { //列映射定義數(shù)據(jù)源中的列和目標(biāo)表中的列之間的關(guān)系 sbc.ColumnMappings.Add(displayName[i], dbComlunName[i]); } sbc.WriteToServer(dt); } }
這樣子基本可以解決表的批量插入了。不過如果是修改而不是插入呢。我的做法是先將該表原來需要修改的數(shù)據(jù)全刪除,再執(zhí)行本方法。
至于有更好的方法,我暫時還沒有想到。。。還有這三個重載的方法如果歸并為一個方法我也暫時沒有想到很好的方法。。。
來自: 昵稱10504424 > 《C#》
0條評論
發(fā)表
請遵守用戶 評論公約
[原創(chuàng)]大量數(shù)據(jù)導(dǎo)出為Excel文件的問題解決(C#,ASP.NET)
[原創(chuàng)]大量數(shù)據(jù)導(dǎo)出為Excel文件的問題解決(C#,ASP.NET)依據(jù)SZW朋友的提醒:本文所說的Excel文件指.xls文件,不包括Excel2007的默認(rèn)保存文檔格式.2.每個sheet最多最多65535行數(shù)據(jù),但一個文件可以有很多個...
unity連接Access
ODAC(V9.5.15) 學(xué)習(xí)筆記(十二)TOraLoader
開始載入數(shù)據(jù),觸發(fā)OnPutData 或OnGetColumnData事件,二選一即可,并在該事件中進行數(shù)據(jù)賦值。將一個數(shù)據(jù)集中的數(shù)據(jù)全部導(dǎo)入到數(shù)據(jù)庫表中,不需要事前調(diào)用CreateColumns方法創(chuàng)建列,也不需要編寫OnPut...
使用 DataAdapter 和 DataSet 更新數(shù)據(jù)庫
使用 DataAdapter 和 DataSet 更新數(shù)據(jù)庫 - Ready! - 博客園。使用 DataAdapter 和 DataSet 更新數(shù)據(jù)庫 DataAdapter 的 Update 方法:將 DataSet 中的更改解析回數(shù)據(jù)源。Update 方法會將更改解析回數(shù)據(jù)...
Datagridview數(shù)據(jù)寫入DataTable
Datagridview數(shù)據(jù)寫入DataTable.System.Data.DataTable dt = new System.DataTable();dt.Clear();foreach (DataGridViewColumn headerCell in dataGridView1.Columns)Columns.Add(headerCell.HeaderTex...
C# 操作Excel文件之NPOI (二)
C# 操作Excel文件之NPOI (二)本篇要記錄的是使用NPOI創(chuàng)建Excel文件并將數(shù)據(jù)寫入。使用NPOI的方式將dataGridView中的數(shù)據(jù)導(dǎo)出到Excel.usi...
傳統(tǒng)的行存儲和(HBase)列存儲的區(qū)別
傳統(tǒng)的行存儲和(HBase)列存儲的區(qū)別 1 為什么要按列存儲。數(shù)據(jù)被保存在一起。2補充:數(shù)據(jù)壓縮。剛才其實跳過了資料里提到的另一種技術(shù)...
詳解如何挑戰(zhàn)4秒內(nèi)百萬級數(shù)據(jù)導(dǎo)入SQL Server
詳解如何挑戰(zhàn)4秒內(nèi)百萬級數(shù)據(jù)導(dǎo)入SQL Server.本實驗中所用到工具為Visual Studio 2008和SQL Server 2000、SQL Server 2008,分別使用5中...
Bulk Insert命令詳細(xì)
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] --指定數(shù)據(jù)文件中的數(shù)據(jù)如何排序 [ [ , ] ROWS_PER_BATCH = rows_per_batch ] [ [ , ] ROWTERMINATOR = ''row_terminat...
微信掃碼,在手機上查看選中內(nèi)容