Loading... <!-- wp:image {"id":1483,"sizeSlug":"large"} --> <figure class="wp-block-image size-large"><img src="https://mrgeng.com/usr/uploads/2020/05/SQLBulkCopy.jpg" alt="" class="wp-image-1483" style=""></figure> <!-- /wp:image --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">我们使用.net写循环获取大量数据存在一个DataTable以后,可能需要对这些数据进行一些后处理,前端呈现,或供第三方软件使用,这个时候就需要数据库来中转存储这些数据。如何快速地将DataTable中的大量数据批量导入数据库中,就是今天我遇到的一个问题,经过一番查询,发现了一个SQLBulkCopy的方法,很是好用。</p> <!-- /wp:paragraph --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">SqlBulkCopy是.NETFramework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其它数据源的数据有效批量的加载到SQL Server表中的功能。即使表结构完全不同,也可以通过字段间的对应关系,顺利的将数据导过来。</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>using System.Data; using System.Data.SqlClient;</code></pre> <!-- /wp:code --> <!-- wp:code --> <pre class="wp-block-code"><code>public static void DataTableToSQLServer(DataTable dt) { string connectionString = @"Persist Security Info=False;Initial Catalog=dbname;Data Source=172.11.111.111; User ID=sa; Password=pwd"; using (SqlConnection destinationConnection = new SqlConnection(connectionString)) { destinationConnection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection)) { try { bulkCopy.DestinationTableName = "callLog";//要插入的表的表名 bulkCopy.BatchSize = dt.Rows.Count; bulkCopy.ColumnMappings.Add("id", "id");//第一个"id"是dt中的字段名,第二个"id"表中的字段名 bulkCopy.ColumnMappings.Add("note_id", "note_id"); bulkCopy.ColumnMappings.Add("call_start_at", "call_start_at"); bulkCopy.WriteToServer(dt); System.Windows.Forms.MessageBox.Show("插入成功:"+ dt.Rows.Count+"行"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }</code></pre> <!-- /wp:code --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">3D中我们可以通过下面代码获得数据库连接</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>Private ActivePlant As Plant = MiddleServiceProvider.SiteMgr.ActiveSite.ActivePlant Private oMetaMgr As MetadataManager = ActivePlant.PlantModel.MetadataMgr Private oModName As String = MiddleServiceProvider.SiteMgr.ActiveSite.ActivePlant.PlantModel.Name Private sModConn As SQLDBConnection = New SQLDBConnection(ClientServiceProvider.WorkingSet.ActiveConnection.Server, oModName) Dim SqlConn As SqlConnection = New SqlConnection(sModConn.Connection.ConnectionString)</code></pre> <!-- /wp:code --> 最后修改:2025 年 03 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏