批量儲存資料 List 的使用

2021-06-24 11:17:03 字數 1466 閱讀 4026

在機房收費這個系統中是沒有涉及到資料批量操作這樣的功能的,假如使用者某天提出了批量新增或修改學生(卡)資訊這樣的需求,我們應該怎樣實現呢?這是個很現實的問題,因為學生的資訊在一入學的時候就會儲存到乙個相應的系統裡,如教務系統。但是卡的資訊可能是後來才新增的。所以很可能提這樣的需求,從教務系統獲取乙份學生資訊的名單,然後對這些學生進行批量建卡操作。

假設批量新增是通過

datagrid

實現的,我們

需要把datagrid

裡面的每一條資料插入到資料庫中。

方法一:

//迴圈**的所有行,逐行插入

for (int i = 0; i < datagrid.rows.count; i++)

這樣操作實現了批量新增的功能,但是仔細看看,假如我們插入了

10條資訊,這樣程式在執行的時候一共走了

10次(

ubd)插入資訊這條線,當然次數少我們看不出有什麼影響,但是當同時插入上千條資訊的時候呢?難道讓程式再走上千次插入資訊這個流程?這樣程式的執行效率一下變負值了。並且如果程式採用一些服務如

wcf的話,那就同時需要呼叫上千次

wcf服務!假如在插入

800條資料的時候程式崩潰了,剩下沒插入的資料怎麼處理?很顯然也不能保證資料的完整性。

在資料量大的時候,這樣做肯定是不可取的,怎麼去改進呢?既然迴圈單條插入影響效率,那我們就應該想辦法對這一條條的資料進行「打包」,然後再集中處理。

如何打包?這就用到了我們熟悉的

list<>

泛型集合。

方法二:

//宣告乙個cardinfoentity型別的泛型集合

listencardinfolist = new list();

for (int i = 0; i < datagrid.rows.count; i++)

new cardbll().insert(encardinfolist); //將整個集合傳入資料層,迴圈list<>進行新增

宣告乙個list<>把要插入的資訊全部新增到該集合中,然後統一傳到資料訪問層,進行新增操作。這樣做程式只走了一遍流程,僅呼叫了一次wcf服務,提高了執行效率,再加上事務處理,也就很好的保證了資料的完整性。

現在寫**,不再是寫出來就行,能實現功能就行。更需要考慮的是怎麼讓**更有價值,讓程式執行更有效率。

oノo══════════════════════

══════╲  

│ヽ.學無止境, 分享至上。                                   │  

│   出自: 

.ヽ│  

╲══════════════════════════

═══ヾ

使用List儲存搜尋結果,資料重複

在構造搜尋引擎時,後台搜尋 為了與前端顯示結合,方便分頁,沒有直接使用lucene的hits。而是根據頁面的請求,將hits中的相應條目存入list結構中,前端顯示時讀取list的內容,顯示在螢幕上。在針對乙個關鍵字搜尋 排序 過濾時,顯示的結果均正常,使用兩個關鍵字,即先根據乙個關鍵字查詢,在結果...

使用GreenDao儲存list集合資料

不詩意的女程式猿不是好廚師 具體步驟 1.greendao的配置 在project的build.gradle檔案中 buildscript dependencies 在module的build.gradle檔案中 dependencies 2.建立所需的實體類物件 entity public cla...

批量資料的儲存方式

靜態陣列 順序儲存 動態陣列 順序儲存 鍊錶 鏈式儲存 鍊錶 不需要事先指定空間大小,動態分配和釋放記憶體。陣列和鍊錶的區別 陣列 編譯時決定大小,太大或太小?可以隨機訪問 a i 插入和刪除操作費時 鍊錶 執行時決定大小,需要時分配和不需要時釋放 不能隨機訪問 快速插入和刪除 記憶體的劃分與分配 ...