我有一个DataTable
,想要将其推送到数据库。我希望能够像这样说:
myDataTable.update();
但在阅读了 MSDN 文档之后,显然这是逐行插入的。
需要注意的是,这些语句不是批处理执行的,每行都是单独更新的。
我有什么替代方案吗?
编辑:我正在使用 SQL Server 2005
如果使用SQL Server, 可以使用SqlBulkCopy.WriteToServer(DataTable)
方法
或者在SQL Server中,您可以将其写入 .csv 文件并使用BULK INSERT
如果使用MySQL, 您可以将其写入 .csv 文件并使用LOAD DATA INFILE
命令
如果使用Oracle, 您可以使用 ODP.NET 的数组绑定功能
如果使用SQLite:
string connectionString= ServerName + DatabaseName + SecurityType;
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) {
connection.Open();
bulkCopy.DestinationTableName = "TableName";
try {
bulkCopy.WriteToServer(dataTableName);
} catch (Exception e) {
Console.Write(e.Message);
}
}
请注意,数据库表的结构和表名应该相同,否则会抛出异常。以下是使用DataTable的方法。这是一段可以正常工作的测试代码。
using (SqlConnection con = new SqlConnection(connStr))
{
con.Open();
// Create a table with some rows.
DataTable table = MakeTable();
// Get a reference to a single row in the table.
DataRow[] rowArray = table.Select();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(con))
{
bulkCopy.DestinationTableName = "dbo.CarlosBulkTestTable";
try
{
// Write the array of rows to the destination.
bulkCopy.WriteToServer(rowArray);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}//using