C#批量插入数据库数据的高效方法
在日常的开发工作中,我们经常需要将大量数据插入到数据库中。这种情况下,如果采用逐条插入的方式,效率会非常低下。幸好,C#提供了多种高效的批量插入数据的方法,可以大大提高数据插入的速度。下面我们就来详细了解一下这些方法。
1. 使用SqlBulkCopy类进行批量插入
SqlBulkCopy类是C#中专门用于批量插入数据的类,它可以高效地将数据从一个数据源复制到数据库表中。使用该类进行批量插入的步骤如下:
- 创建SqlBulkCopy对象,并指定目标数据库表名
- 设置BatchSize属性,指定每次提交的记录数
- 设置DestinationTableName属性,指定目标数据库表名
- 调用WriteToServer方法,将数据批量插入到数据库表中
下面是一个示例代码:
using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn)) { bulkCopy.DestinationTableName = "dbo.MyTable"; bulkCopy.BatchSize = 1000; bulkCopy.WriteToServer(dataTable); } }
2. 使用DataAdapter的BatchUpdate方法进行批量插入
DataAdapter类也提供了一个BatchUpdate方法,可以用于批量插入数据。使用该方法的步骤如下:
- 创建SqlDataAdapter对象,并设置InsertCommand属性
- 调用Update方法,将数据批量插入到数据库表中
下面是一个示例代码:
using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.InsertCommand = new SqlCommand("INSERT INTO dbo.MyTable (Column1, Column2) VALUES (@Column1, @Column2)", conn); adapter.InsertCommand.Parameters.AddWithValue("@Column1", "Value1"); adapter.InsertCommand.Parameters.AddWithValue("@Column2", "Value2"); DataTable dataTable = new DataTable(); dataTable.Rows.Add("Value1", "Value2"); adapter.Update(dataTable); }
3. 使用Dapper框架进行批量插入
Dapper是一个轻量级的ORM框架,它提供了一个ExecuteBulkCopy方法,可以用于批量插入数据。使用该方法的步骤如下:
- 创建一个实体类,表示要插入的数据
- 使用ExecuteBulkCopy方法,将实体类列表批量插入到数据库表中
下面是一个