如何使用C#进行MSSQL数据库的批量插入操作?

2025-05-25 0 96

在开发基于Microsoft SQL Server (MSSQL) 的应用程序时,经常会遇到需要将大量数据插入到数据库中的情况。传统的逐行插入方式不仅效率低下,而且可能导致性能问题。为了提高数据插入的效率,C提供了多种方法来实现批量插入操作。本文将介绍如何使用C#进行MSSQL数据库的批量插入操作。

1. 使用SqlBulkCopy类

SqlBulkCopy 是 .NET 框架中专门用于高效批量插入数据的类。它可以直接将大量数据从内存中的 DataTable 或其他数据源快速复制到 MSSQL 数据库表中。

步骤:

确保你已经添加了对 System.Data.SqlClient 命名空间的引用,并创建一个连接字符串以连接到你的 MSSQL 数据库。

接下来,准备要插入的数据。通常情况下,我们会使用 DataTable 来存储这些数据。你可以通过读取文件、查询其他数据库或直接生成数据来填充这个表。

然后,使用以下代码示例将数据批量插入到 MSSQL 表中:

csharp
using System;
using System.Data;
using System.Data.SqlClient;
public void BulkInsertData(string connectionString, DataTable data, string destinationTable)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
// 打开数据库连接
connection.Open();
// 创建 SqlBulkCopy 实例
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
// 设置目标表名称
bulkCopy.DestinationTableName = destinationTable;
// 可选:设置批处理大小(根据实际需求调整)
bulkCopy.BatchSize = 1000;
// 可选:设置超时时间(默认为30秒)
bulkCopy.BulkCopyTimeout = 60;
// 开始批量复制操作
try
{
bulkCopy.WriteToServer(data);
Console.WriteLine(“数据批量插入成功!”);
}
catch (Exception ex)
{
Console.WriteLine($”发生错误: {ex.Message}”);
}
}
}
}

2. 使用参数化查询和事务

如果你不想使用 SqlBulkCopy,或者你需要更灵活地控制插入逻辑,可以考虑使用参数化查询结合事务来进行批量插入。这种方法虽然不如 SqlBulkCopy 快,但在某些场景下可能更加适用。

步骤:

创建一个包含所有待插入记录的列表。每个记录都应该是一个对象,该对象的属性对应于目标表中的列。

接着,开启一个事务并执行多个插入命令。通过将所有插入操作封装在一个事务中,可以确保要么所有记录都被正确插入,要么没有记录被插入,从而保证数据的一致性。

提交事务完成批量插入。如果过程中出现任何异常,则回滚事务以防止部分数据丢失。

csharp
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
public class BatchInsertExample
{
public void InsertRecords(string connectionString, List records)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlTransaction transaction = connection.BeginTransaction())
{
try
{
foreach (var record in records)
{
string query = “INSERT INTO MyTable (Column1, Column2) VALUES (@Value1, @Value2)”;
using (SqlCommand command = new SqlCommand(query, connection, transaction))
{
command.Parameters.AddWithValue(“@Value1”, record.Value1);
command.Parameters.AddWithValue(“@Value2”, record.Value2);
command.ExecuteNonQuery();
}
}
// 提交事务
transaction.Commit();
Console.WriteLine(“数据批量插入成功!”);
}
catch (Exception ex)
{
// 回滚事务
transaction.Rollback();
Console.WriteLine($”发生错误: {ex.Message}”);
}
}
}
}
}
// 示例记录类
public class MyRecord
{
public string Value1 { get; set; }
public int Value2 { get; set; }
}

3. 注意事项

在进行批量插入操作时,请注意以下几点:

通过使用 SqlBulkCopy 类或参数化查询结合事务,C提供了多种方法来实现高效的 MSSQL 数据库批量插入操作。选择哪种方式取决于具体的应用场景和需求。希望本文能够帮助你在实际项目中更好地处理大批量数据的插入任务。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 数据库RDS 如何使用C#进行MSSQL数据库的批量插入操作? https://www.kuaiidc.com/32876.html

相关文章

发表评论
暂无评论