有没有什么做高数的网站,青岛外贸网站建设哪家好,企业微信scrm系统源码,wordpress合租我们经常要在一个表中将数据迁移到另一个表#xff0c;当然#xff0c;用的方法十分多了。在.net 2.0中#xff0c;提供了一个sqlbulkcopy类#xff0c;也可以实现如下的操作#xff0c;下面简单介绍下。比如一个表如下CREATE TABLE Person3(PersonID int IDENTITY(1,1) P…我们经常要在一个表中将数据迁移到另一个表当然用的方法十分多了。在.net 2.0中提供了一个sqlbulkcopy类也可以实现如下的操作下面简单介绍下。比如一个表如下 CREATE TABLE Person3 ( PersonID int IDENTITY(1,1) PRIMARY KEY, Name nvarchar(200), Email nvarchar(200), Picture image ) INSERT INTO Person3(Name,Email,Picture) SELECT Name,Email,Picture FROM Person 假设person表已经存在了则上面的语句可以往person3表中插入数据(在sql server 2005中执行。现在我们使用下面的代码来实现 string connectionString ConfigurationManager.ConnectionStrings[MyDatabase].ConnectionString; SqlConnection myConnection new SqlConnection(connectionString); SqlCommand myCommand new SqlCommand(SELECT * FROM Person, myConnection); myConnection.Open(); SqlDataReader dr myCommand.ExecuteReader(); SqlConnection myNewConnection new SqlConnection(connectionString); myNewConnection.Open(); SqlBulkCopy bulk new SqlBulkCopy(myNewConnection); bulk.DestinationTableName [Person3]; try { bulk.WriteToServer(dr); } catch (Exception ex) { Response.Write(ex.Message); } finally { myNewConnection.Close(); dr.Close(); myConnection.Close(); bulk.Close(); } 下面来解析下。首先新建一个数据库连接之后是很经典的代码了从person表中拿出数据当到datareader中去。之后我们又新建立了个数据连接之后使用 SqlBulkCopy bulk new SqlBulkCopy(myNewConnection); bulk.DestinationTableName [Person3]; 其中将mynewconnection作为参数传到 sqlbulkcopy类的构造参数中去并指定目标迁移的表名是person3. 之后再使用bulk.WriteToServer(dr);就可以迁移了。 而上面的person表和person3的结构是完全相同的那么如果结构不同的怎么办呢下面举例子说明创建一个表person2 CREATE TABLE Person2 ( PersonID int IDENTITY(1,1) PRIMARY KEY, FirstName nvarchar(200), LastName nvarchar(200), Email nvarchar(200), Picture image ) 如果我们按上面将person表迁移到person2表中去将会出错因为字段不同而我们将采用下面的代码 string connectionString ConfigurationManager.ConnectionStrings[MyDatabase].ConnectionString; SqlConnection myConnection new SqlConnection(connectionString); SqlCommand myCommand new SqlCommand(SELECT * FROM Person, myConnection); myConnection.Open(); SqlDataReader dr myCommand.ExecuteReader(); SqlConnection myNewConnection new SqlConnection(connectionString); myNewConnection.Open(); SqlBulkCopy bulk new SqlBulkCopy(myNewConnection); bulk.DestinationTableName [Person2]; bulk.ColumnMappings.Add(Name, LastName); bulk.ColumnMappings.Add(Email, Email); bulk.ColumnMappings.Add(Picture, Picture); try { bulk.WriteToServer(dr); } catch (Exception ex) { Response.Write(ex.Message); } finally { myNewConnection.Close(); dr.Close(); myConnection.Close(); bulk.Close(); } 可以看到这里使用bulk.ColumnMappings.Add“。。。”“。。。”来强制规定源目标字段和哪一个目标表的字段相匹配了。 据说用sqlbulkcopy类在数据多的情况下性能是十分好的呵呵。 posted on 2005-08-29 19:22 jackyrong的世界 阅读(579) 评论(1) 编辑 收藏 引用 收藏至365Key 所属分类: .NET Feedback # re: 在asp.net 2.0中使用SqlBulkCopy类迁移数据 2006-06-13 16:39 antony.net 写的很明白但我有一个问题你的PersonID 是自增列吧你用SqlBulkCopy bulk new SqlBulkCopy(myNewConnection); 那么导数据没有问题PersonID 会自增但你用这个SqlBulkCopy bulk new SqlBulkCopy(myNewConnection, SqlBulkCopyOptions.KeepIdentity SqlBulkCopyOptions.UseInternalTransaction)也就是放在一个事务里就有主键冲突的问题。不知道你有没有遇到过这个问题。我觉得很奇怪的哦。你有什么看法 转载于:https://www.cnblogs.com/tlnature/archive/2009/02/26/1398835.html