SQL Server 把 List 集合插入数据库
引言
在开发过程中,我们经常会遇到将数据从一个数据结构(例如 List)插入到数据库中的需求。SQL Server 是一种常用的关系型数据库管理系统,本文将介绍如何使用 SQL Server 将 List 集合插入数据库,并提供相应的代码示例。
数据准备
在开始之前,我们需要准备一些数据和数据库表结构。假设我们有一个名为 Person
的表,包含以下字段:
Id
:主键,自增长的整数类型Name
:人员姓名,字符串类型Age
:人员年龄,整数类型
我们将创建一个 List 集合,其中包含了要插入的数据。示例数据如下:
List<Person> persons = new List<Person>
{
new Person { Name = "Alice", Age = 25 },
new Person { Name = "Bob", Age = 30 },
new Person { Name = "Charlie", Age = 35 }
};
使用 SQL Server Bulk Insert
SQL Server 提供了一个称为 Bulk Insert 的功能,可以高效地将大量数据一次性插入到数据库中。我们可以使用 C# 的 ADO.NET 提供程序,结合 SQL Server Bulk Insert,将 List 集合中的数据插入到数据库。
首先,我们需要创建一个 DataTable,用于存储 List 集合的数据。DataTable 是一个内存中的数据表,可以表示和操作数据集。我们可以通过以下代码创建 DataTable,并将 List 集合中的数据添加到其中:
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
foreach (Person person in persons)
{
dataTable.Rows.Add(person.Name, person.Age);
}
然后,我们可以使用 SqlConnection 和 SqlBulkCopy 类,将 DataTable 中的数据批量插入到数据库中。SqlBulkCopy 是一个用于高性能数据库批量复制的类,它可以将数据从一个数据源复制到另一个数据源。
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Person";
bulkCopy.WriteToServer(dataTable);
}
}
在上述代码中,我们首先创建了一个 SqlConnection 对象,并通过 Open 方法打开数据库连接。然后,我们创建了一个 SqlBulkCopy 对象,并设置了目标表的名称。最后,我们调用 WriteToServer 方法,将数据批量插入到数据库中。
完整代码示例
下面是一个完整的示例代码,演示了如何使用 SQL Server Bulk Insert 将 List 集合插入到数据库中:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Program
{
static void Main(string[] args)
{
List<Person> persons = new List<Person>
{
new Person { Name = "Alice", Age = 25 },
new Person { Name = "Bob", Age = 30 },
new Person { Name = "Charlie", Age = 35 }
};
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
foreach (Person person in persons)
{
dataTable.Rows.Add(person.Name, person.Age);
}
string connectionString = "Data Source=(local);Initial Catalog=YourDatabase;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Person";
bulkCopy.WriteToServer(dataTable);
}
}
Console.WriteLine("Data inserted successfully.");
}
}
在上述代码中,我们通过创建一个名为 Person
的表,并将 List 集合中的数据插入到该表中。
数据库表结构
下图为 Person
表的结构关系图:
erDiagram
Person ||--|| Id : int (PK)
Person ||--|{ Name : string
Person ||--|{ Age : int
总结
本文介绍了如何使用 SQL Server Bulk Insert 将 List 集合插入到数据库中。通过使用 ADO.NET 提供的 SqlConnection、SqlBulkCopy 类,我们可以高效地将大