曾经做过一个网站,某一页需要这样处理:
把两个表查询出的结果放在一个GridView中,然后从GridView中检索中日期相同的数据并计算.
当时的一个同事用了联接查询,但表联接的语句让我看了头疼,大概有五行,所以我自己去找了另一种方法,
我在数据库中新建了一个空表,设置好结构.然后把GridView中数据批量复制到这个空表中,然后从此表中
查询数据,不太繁琐,又容易理解.
在软件开发中,把数据从一个地方复制到另一个地方是一个普遍的应用。在很多不同的场合都会执行这个操作,
包括旧系统到新系统的移植,从不同的数据库备份数据和收集数据。
ASP.NET 2.0有一个SqlBulkCopy类,它可以帮助你从不同的数据源复制数据到SQL SERVER数据库。
本文示范SqlBulkCopy类的不同应用。
下面的代码的作用是把数据从源表复制到目的表。
private static void PerformBulkCopy()
{
string connectionString =
@"Server=localhost;Database=Northwind;Trusted_Connection=true";
// 源
using (SqlConnection sourceConnection = new SqlConnection(connectionString))
{
SqlCommand myCommand = new SqlCommand("SELECT * FROM Products_Archive",
sourceConnection);
sourceConnection.Open();
SqlDataReader reader = myCommand.ExecuteReader();
// 目的
using (SqlConnection destinationConnection = new
SqlConnection(connectionString))
{
// 打开连接
destinationConnection.Open();
using (SqlBulkCopy bulkCopy = new
SqlBulkCopy(destinationConnection.ConnectionString))
{
bulkCopy.BatchSize = 500;
bulkCopy.NotifyAfter = 1000;
bulkCopy.SqlRowsCopied += new
SqlRowsCopiedEventHandler(bulkCopy_SqlRowsCopied);
bulkCopy.DestinationTableName = "Products_Latest";
bulkCopy.WriteToServer(reader);
}
}
reader.Close();
}
}
假如你要从Products_Archive表中把所有的产品名称及其数量复制到Products_TopSelling表里。
private static void PerformBulkCopyDifferentSchema()
{
string connectionString =
@"Server=localhost;Database=Northwind;Trusted_Connection=true";
DataTable sourceData = new DataTable();
// 源
using (SqlConnection sourceConnection = new SqlConnection(connectionString))
{
SqlCommand myCommand = new SqlCommand("SELECT TOP 5 * FROM
Products_Archive", sourceConnection);
sourceConnection.Open();
SqlDataReader reader = myCommand.ExecuteReader();
// 目的
using (SqlConnection destinationConnection = new
SqlConnection(connectionString))
{
// 打开连接
destinationConnection.Open();
using (SqlBulkCopy bulkCopy = new
SqlBulkCopy(destinationConnection.ConnectionString))
{
bulkCopy.ColumnMappings.Add("ProductID", "ProductID");
bulkCopy.ColumnMappings.Add("ProductName", "Name");
bulkCopy.ColumnMappings.Add("QuantityPerUnit", "Quantity");
bulkCopy.DestinationTableName = "Products_TopSelling";
bulkCopy.WriteToServer(reader);
}
}
reader.Close();
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21022866/viewspace-566834/
,如需转载,请注明出处,否则将追究法律责任。