我們經常要在乙個表中將資料遷移到另乙個表,當然,用的方法十分多了。在.net 2.0中,提供了乙個sqlbulkcopy類,也可以實現如下的操作,下面簡單介紹下。比如乙個表如下
create tableperson3
(
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]";
trybulk.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 tableperson2
(
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]";
"name", "lastname");"email", "email");"picture", "picture");
trybulk.writetoserver(dr);
catch (exception ex)
response.write(ex.message);
finally
mynewconnection.close();
dr.close();
myconnection.close();
bulk.close();
心情不好看看這些話,也許你會找到答案
莎士比亞說 再好的東西,都有失去的一天。再深的記憶,也有淡忘的一天。再愛的人,也有遠走的一天。再美的夢,也有甦醒的一天。該放棄的決不挽留。2.幾公尺說 當你喜歡我的時候,我不喜歡你,當你愛上我的時候,我喜歡上你,當你離開我的時候,我卻愛上你,是你走得太快,還是我跟不上你的腳步,我們錯過了諾亞方舟,錯...
blog 你知道哪些? 也許對你有用
站點名稱 google自己的部落格 簡單介紹 google自己的部落格,非常容易申請gg廣告 站點名稱 和訊部落格 簡單介紹 財經 人士用得比較多,做ggad的話還是很合適的 站點名稱 中翼網部落格 站點名稱 歪酷部落格 站點名稱 中華網部落格 站點名稱 部落格龍 簡單介紹 比較簡單,裡面提供免費部...
摘錄 面試官也許會這樣問你
回答樣本一 我對工資沒有硬性要求,我相信貴公司在處理我的問題上會友善合理。我注重的是找對工作機會,所以只要條件公平,我則不會計較太多。回答樣本二 我受過系統的軟體程式設計的訓練,不需要進行大量的培訓,而且我本人也對程式設計特別感興趣。因此,我希望公司能根據我的情況和市場標準的水平,給我合理的薪水。回...