日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在asp.net 2.0中使用SqlBulkCopy类迁移数据

發(fā)布時間:2023/12/20 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在asp.net 2.0中使用SqlBulkCopy类迁移数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在asp.net 2.0中使用SqlBulkCopy類遷移數(shù)據(jù)?(轉)

http://jackyrong.cnblogs.com/archive/2005/08/29/225521.html

我們經(jīng)常要在一個表中將數(shù)據(jù)遷移到另一個表,當然,用的方法十分多了。在.net 2.0中,提供了一個sqlbulkcopy類,也可以實現(xiàn)如下的操作,下面簡單介紹下。比如一個表如下
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表已經(jīng)存在了,則上面的語句可以往person3表中插入數(shù)據(jù)(在sql server 2005中執(zhí)行)。現(xiàn)在我們使用下面的代碼來實現(xiàn)
???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();

}

? 下面來解析下。首先,新建一個數(shù)據(jù)庫連接,之后是很經(jīng)典的代碼了,從person表中拿出數(shù)據(jù),當?shù)絛atareader中去。之后,我們又新建立了個數(shù)據(jù)連接,之后,使用

SqlBulkCopy?bulk =?new?SqlBulkCopy(myNewConnection);

bulk.DestinationTableName =?"[Person3]";

其中,將mynewconnection作為參數(shù)傳到 sqlbulkcopy類的構造參數(shù)中去,并指定目標遷移的表名是person3.
?? 之后,再使用bulk.WriteToServer(dr);就可以遷移了。
??? 而上面的person表和person3的結構是完全相同的,那么如果結構不同的,怎么辦呢?下面舉例子說明,創(chuàng)建一個表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(“。。。”,“。。?!?#xff09;來強制規(guī)定,源目標字段和哪一個目標表的字段相匹配了。
???據(jù)說用sqlbulkcopy類,在數(shù)據(jù)多的情況下,性能是十分好的,呵呵。

?

轉載于:https://www.cnblogs.com/gongyu/p/3938993.html

總結

以上是生活随笔為你收集整理的在asp.net 2.0中使用SqlBulkCopy类迁移数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。