因為給老闆做個新軟體,涉及到提取舊資料到新軟體中.原來採取的sql單個新增記錄,結果匯入一批資料約兩萬條記錄需要半個多小時,實在受不了這個速度.經baidu加研究發現個高效的批量新增資料方法.
1.建立個資料集(xsd)並將資料庫中表拖入資料庫設計介面中如下圖
利用這個資料集可以很方便的新增各種sql語句從而實現資料庫操作,非常方便用這個後我從來就沒再用過ado了.不過有個缺點就是跨表查詢可能會出現諸如:未能啟用約束 一行或多行中包含違反非空 的錯誤,至今還沒有找到解決方法從vs2003中就有這問題到vs2005仍然存在,實在是遺憾.我只能採取變通的方法從乙個表中取出資料後再到另乙個表中去查詢.也算是解決但效率上肯定會受到不少影響.
2.在程式**中新增宣告引用資料表如:
private
dsnewfasoyotableadapters.membertableadapter mynewmta;
3.初始化資料表
mynewmta
=new
dsnewfasoyotableadapters.membertableadapter();
4.使用資料表運算元據庫及利用datatable批量新增資料
先建立個datatable 如dtmembers
然後用xsd裡的資料表mynewmta.fill載入dtmembers
在for迴圈裡給memberrow賦值並將row載入到dtmembers中
最後使用mynewmta.update更新資料庫實現批量加入資料.最後的result就代表著成功執行的記錄數.
datatable dtoldmembers
=myoldmta.getallmembers();
objstate =""
;dsnewfasoyo.memberdatatable dtmembers
=new
dsnewfasoyo.memberdatatable();
mynewmta.fill(dtmembers);
for(
inti =0
; i
<
dtoldmembers.rows.count; i++)
intresult
=mynewmta.update(dtmembers);
console.writeline(
"add member detail:"+
result);
if(result
==dtoldmembers.rows.count)
messagebox.show(
"匯入會員資料完成!",
"information
", messageboxbuttons.ok, messageboxicon.information);
else
messagebox.show(
"匯入會員資料失敗!",
"warning
", messageboxbuttons.ok, messageboxicon.warning);
C 之資料集 DataSet物件
ado.net資料訪問技術的乙個突出的特點就是支援離線訪問,而實現這種離線訪問技術的核心就是dataset物件,該物件通過將資料駐留在記憶體來實現離線訪問。dataset物件概述 dataset物件由一組datatable物件組成,這些物件與datarelation物件互相關聯。這些dataset物...
C 操作Dataset資料集與SQLite資料庫
近日有需要寫點c 程式,有用到dataset資料集和sqlite資料庫,由於我從來就不擅長記各種程式語言的語法,所以在查閱一堆資料後,留下以下內容備忘 一 sqlite操作,直接貼 很簡單 建立乙個資料庫檔案 string test.db system.data.sqlite.sqliteconne...
c 使用redis 訪問dataset資料集
1.下面是關於c 使用redis資料庫 對dataset進行訪問操作的方法using servicestack.redis using system using system.collections.generic using system.configuration using system.da...