引數傳遞,是對方法而言的。在簡單的程式設計中。公用的方法是定義在模組中的。其他的類呼叫模組中的方法時需要向方法傳遞函式。私有方法是定義在各自的類中的。呼叫的時候也需要向函式中傳遞引數。但是今天我想說的是在三層架構中引數的傳遞情況。這時候對於引數的傳遞更是常見的。上一層和下一層的聯絡都是需要呼叫下一層的方法的。
引數傳遞一般包括這幾種形式:
1.傳遞值。
2.傳遞實體。
3傳遞陣列,集合。 1.
傳遞值。
這是最簡單,最常見的傳參方式。你需要什麼就傳遞什麼。不如你需要查詢卡號是否存在。就把卡號單獨最為引數向下傳遞。返回結果也只需要有乙個
boolean
值作為參照,或者是乙個具體的查詢結果(比如帶聚合函式的查詢的返回結果)。
2.傳遞實體:
這是三層中最典型的處理方式。因為每一層都要新增對實體層的引用。這樣每一層也就都「認識」了實體,可以在
u層對所要傳遞的實體例項化和賦值,然後作為引數向下傳遞。對於傳回的引數有兩種處理方法,一是出傳回包含查詢內容的資料集
dataset
或是datatable
,還有一種就是傳回實體。但是對於資料庫操作層(
d層)來說,所有的處理操作都是封裝在
sqlhelper
裡的。sqlhelper
不可能把要傳回的實體賦值好。這些操作只能在
d層操作。
對這兩種傳回的引數作乙個比較:
1.對於傳回
dataset
或datatable
你在需要取出裡面的資料時不免會比較的麻煩。而且可能出現買一層都有可能執行讀其中資料的操作,這樣就看上去會比較的亂。
2.對於傳回實體的方法:
你需要把實體的所有欄位查得的值都賦值好。然後再向下傳遞。這樣每一層需要讀取查得的資料只需要點出實體的屬性就可以了。而且這樣的是更好的封裝,對於不同的資料需要。如果操作的是同一張表,就可以通過
d層的乙個函式進行處理。
比如有的要查詢
只學生姓名,有的要查詢
只學生年級。
d層的乙個根據學號的查詢就可以完成了。
3.傳遞陣列,集合
傳遞集合對於傳遞陣列來說應用的範圍要廣很多。集合的作用就是可以存放不同型別的資料。當然如果作為傳入引數只有兩個不同型別的資料,我們完全可以讓乙個函式包含兩個引數。但對於傳入引數很多,和返回值來說。集合是個不錯的選擇。對於三層架構加外觀模式來說。外觀往往承擔了所有的邏輯操作。而且所有的邏輯操作的返回值要在
u層有所體現。這樣以集合作為返回引數,
u曾需要什麼型別的查詢結果就可以直接讀取集合的內容。
這一點應用在組合查詢也是非常行之有效的。可以把所有的
u層收集到的查詢條件作為字串的形式儲存在集合作為引數傳遞。當然這裡為了提高效率泛型也是很好的選擇,因為都是字串。
對於引數形式的選擇當然是多種多樣的。只用在合適的地方選擇合適的引數才是最聰明的選擇
機房收費系統完美設計 獲得系統時間
為什麼要獲得系統時間?情景 當教師登陸系統向資料庫中新增了工作記錄其中包括登入時間,但隨後有人更改了教師使用的計算機的時間。此後教師的所有操作也需要讀取系統時間存入資料庫。此時如果我們只用簡單度語句 time date.now 讀取系統時間存入資料庫會導致教師登陸的時間晚於教師操作的時間。也就是說教...
(五)組合查詢 機房收費系統
前提 組合查詢的思路需要理清,在理清思路的同時,按照先英的想法去執行 一 流程圖 思路 1.用selectcase進行文字轉換 select case n case text1.text 卡號 b cardno case text1.text 姓名 b studentname case text1....
機房收費系統重構 介面設計
終於開始做機房收費系統個人版了。最初是想著如何如何複雜,自己前怕狼後怕虎的,哆哆嗦嗦就是下不了手。一畫圖10幾天過去了,一考試乙個星期又過去了。現在總算是入手了,思路也漸漸清晰起來。問題也隨之而來 在做frmmain這個窗體時,新增的textbox和label的大小不隨窗體最大化而改變。找了一些資料...