【寫在前邊的話】
在進行機房重構的過程中,設計組合查詢的窗體,真的是學到了很多東西。以管窺豹,以蠡測海,所以想小小的總結一下,緬懷這一寸寸學習的時光。
【設計模式之模板方法的運用】
模板方法模式——在乙個抽象類中定義乙個操作中的演算法骨架,而將一些步驟延遲到子類中去實現。模板方法使得子類可以不改變乙個演算法的結構前提下,重新定義演算法的某些特定步驟,模板方法模式把不變行為搬到超類中,從而去除了子類中的重複**。
我們在機房重構的過程中,涉及組合查詢的窗體有多個,我們就可以採用模板方法,這樣給我們提供了很大的便利。
採用模板方法的步驟:
1、建立乙個windows窗體,作為父窗體。
2、繼承此窗體,新增對應的子窗體。
我們在父窗體內寫入查詢、傳參、判空等一般性的事件,而只需在子窗體裡寫入根據窗體與操作的資料庫不同而產生個性化的地方,就可以滿足我們的需求。
【儲存過程的運用】
儲存過程是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件。
組合查詢的時間運用到了儲存過程,這樣方便了很多。因為組合查詢要對資料庫進行很多次操作,我們採用儲存過程直接封裝呼叫就可以了。
【資料型別與比較大小】
以查詢學生上機狀態這個窗體
為例,我設定了三個可以選擇的字段:卡號、上機日期、上機時間。在優化的過程中會出現以下錯誤:
1、比較大小時,根據卡號有時會出現查詢結果明顯錯誤的情況。我通過網路查詢和諮詢大神了解到:字串如果位數不一樣不能直接比較大小,於是我設定卡號必須是6位。
2、通過textbox手動輸入時間或日期的時,會出現「時間和/或日期轉換失敗」的錯誤。於是我新建立了6個datetimepicker控制項,新增cmbobox的click事件:根據第乙個選擇的第乙個查詢條件的不同,隱藏或可用textbox。
3、我於是在實體中新建了6個引數來傳參,但是資料傳入儲存過程的時間過於龐大的判斷邏輯讓我險些崩潰,根據彪哥的建議,我之間把datetimepicker可用時的資料進行強制轉換,並賦值給textbox,讓後根據以前的邏輯就可以進行查詢,算是走了個捷徑,感謝彪哥。
【小結】
遇到的困難就是提公升自己的機會,不要畏懼它。要善於利用網際網路、善於向身邊的大神學習,我們都是最棒的
!
機房重構之組合查詢
組合查詢,不好弄,因為需要有模板模式。不過經過問別人看部落格之後,也算是理解著弄完了。只是弄完了不行啊,得總結啊,那就總結吧。我理解的模板方法就是先建立乙個父模板,然後讓子類來繼承父類,使用父類的功能。public virtual void todgv entity.groupcheck group...
機房重構 組合查詢(知識點總結)
昨天把組合查詢敲完了,過程查了不少的部落格,下面總結下遇到的知識點 組合查詢就是多條件查詢,一條查詢語句where後面的條件很多,而在機房中設計到組合查詢的很多,就用到了模板方法 官方定義 定義乙個操作中的演算法骨架,而將一些步驟延遲到子類。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算...
機房 組合查詢
前言 在剛剛開始機房的時候,僅僅剛剛把整個工程的窗體控制項佈完,聽一些同學說組合查詢有些難,並且我對他們的話深信不疑。但是你現在不做總會到一點時間你是需要去完成的,想到這些,便開始了探索同學們口中的 難 到底有多 難 邏輯分析 想要功能更快的實現,理清邏輯很關鍵。該動筆時就去拿筆畫,一味地在腦子裡想...