DataTable
是一种用于存储表格数据的 .NET 类型,通常用于 ASP.NET Web 应用程序中。批量插入数据库是指将多条记录一次性插入到数据库中,而不是逐条插入,这样可以显著提高数据插入的效率。
INSERT INTO ... VALUES (...), (...)
语法进行批量插入。假设我们有一个 DataTable
对象 dt
,其中包含要插入的数据:
using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = "your_connection_string_here";
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));
dt.Rows.Add("Alice", 30);
dt.Rows.Add("Bob", 25);
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Users";
bulkCopy.ColumnMappings.Add("Name", "Name");
bulkCopy.ColumnMappings.Add("Age", "Age");
bulkCopy.WriteToServer(dt);
}
}
}
}
SqlBulkCopy Class (System.Data.SqlClient)
DataTable
中的数据类型与数据库表中的数据类型不匹配。DataTable
中的数据类型与数据库表中的数据类型一致。using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
try
{
string sql = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, transaction))
{
bulkCopy.DestinationTableName = "Users";
bulkCopy.ColumnMappings.Add("Name", "Name");
bulkCopy.ColumnMappings.Add("Age", "Age");
bulkCopy.WriteToServer(dt);
}
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
Console.WriteLine("批量插入失败: " + ex.Message);
}
}
通过上述方法,可以有效解决批量插入过程中可能遇到的问题,并提高数据插入的效率和可靠性。
领取专属 10元无门槛券
手把手带您无忧上云