首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# DataGridView 數據批量保存到 SQL Server:SqlBulkCopy 高性能方案

     編輯:程式設計綜合問答

場景

從 Excel 導入 DataGridView,需將數萬行數據高效寫入 SQL Server 表 AAAie。

推薦方案:SqlBulkCopy

using (SqlConnection conn = new SqlConnection(connStr)) {
    conn.Open();
    using (SqlBulkCopy bulk = new SqlBulkCopy(conn)) {
        bulk.DestinationTableName = "AAAie";
        // 列映射(可選,若列名一致可省略)
        bulk.ColumnMappings.Add("Col1", "DbCol1");
        bulk.ColumnMappings.Add("Col2", "DbCol2");
        // DataGridView 數據轉 DataTable
        DataTable dt = new DataTable();
        foreach (DataGridViewColumn col in dgv.Columns) 
            dt.Columns.Add(col.Name, col.ValueType ?? typeof(string));
        foreach (DataGridViewRow row in dgv.Rows) {
            if (!row.IsNewRow) {
                DataRow dr = dt.NewRow();
                foreach (DataGridViewCell cell in row.Cells)
                    dr[cell.ColumnIndex] = cell.Value;
                dt.Rows.Add(dr);
            }
        }
        bulk.WriteToServer(dt); // 批量寫入
    }
}

優勢

  • 比逐行 INSERT 快 10-100 倍
  • 自動處理事務、批次提交
  • 內存佔用可控(分批次寫入)

參考

ADO.NET SqlBulkCopy 完整教程

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved