機房重構 組合查詢(知識點總結)

2021-09-22 02:19:56 字數 2380 閱讀 9219

昨天把組合查詢敲完了,過程查了不少的部落格,下面總結下遇到的知識點

組合查詢就是多條件查詢,一條查詢語句where後面的條件很多,而在機房中設計到組合查詢的很多,就用到了模板方法

官方定義

定義乙個操作中的演算法骨架,而將一些步驟延遲到子類。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟

uml圖

大話上總結:

當不變的可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複出現。通過模板方法模式把這些行為搬移到單一的地方,這樣就可以幫助子類擺脫重複的不變的行為的糾纏

自我理解:

定義上提到演算法結構,演算法是解決問題的一系列步驟,對於可重寫的方法的演算法結構本質上給你乙個寫好的公式,根據實際去套就可以了。演算法結構便是重複的東西,將其抽象出來,子類去繼承

實際應用

在windows窗體程式中可以繼承乙個窗體,因為窗體也是乙個類嘛,下面是共有的操作

uml圖

具體**

//定義乙個組合查詢要查詢的表名,在子窗體重寫

public virtual string getdbtablename()

//轉換中文字元為英文本元,在子窗體進行重寫

public virtual string getenglishfromfield(string cbo)

//構造乙個沒有任何返回值的虛方法,來根據combofield的內容,出現相應下拉內容

public virtual void addcontent(combobox file, combobox mark,datetimepicker picker,textbox text)

窗體繼承關係

假如窗體a,b,c

a:b(a繼承了b,繼承b裡屬性方法)

b:c(b繼承了c)

所以可以得出

a:c

首先看下在sql sever中一條兩個條件的查詢語句

select * from customer_info where custid=1313 and custname ='士大夫說的'

//注:在sql中數字型不需要帶單引號,而字串型別需要帶單引號

再來看從c#中如何轉化成下面的語句

static void main(string args)

執行結果:

在這條字串語句拼接邏輯是這樣的

string strsql = "select * from customer_info where custid='"+ custid + "' and custname = '" + custname + "'";

//string strsql =字串+變數名+字串+變數名+字串

//select * from customer_info where custid='為字串,別忘了後面的點哦

在組合查詢儲存過程sql 語句拼接類似

@tempsql = 'select * from ' +@dbtablename+' where '+@cbofield1+@cbomark1+char(39)+@content1+char(39)

//還原下

//select * from work where custname='實打實'

//char(39)為單引號

//select * from 為字串

其中char(32)與char(39)分別是空格和單引號,下面解釋為什麼使用這個

在拼湊字串時,把所有的引數都當成字串處理,當查詢條件本身包含特殊字元的時候,比如 ' 符號,或者其他需

要轉義的字元時,你拼湊的sql就被打斷了

詳見部落格

配置檔案總結(機房重構知識點總結)

在這次機房重構中,第一次用了配置檔案,把資料庫的鏈結字串放在了配置檔案中。和vb6.0版相比。不用又一次編譯軟體,就可以實現資料庫的變更,確實方便了非常多。直到想要總結配置檔案才發現,自己對配置檔案差點兒不了解。不過看著前人的部落格把資料庫連線字串用了一下,其它的一無所知。使用者配置檔案就是在使用者...

機房重構之組合查詢

組合查詢,不好弄,因為需要有模板模式。不過經過問別人看部落格之後,也算是理解著弄完了。只是弄完了不行啊,得總結啊,那就總結吧。我理解的模板方法就是先建立乙個父模板,然後讓子類來繼承父類,使用父類的功能。public virtual void todgv entity.groupcheck group...

蠡測機房重構之組合查詢

寫在前邊的話 在進行機房重構的過程中,設計組合查詢的窗體,真的是學到了很多東西。以管窺豹,以蠡測海,所以想小小的總結一下,緬懷這一寸寸學習的時光。設計模式之模板方法的運用 模板方法模式 在乙個抽象類中定義乙個操作中的演算法骨架,而將一些步驟延遲到子類中去實現。模板方法使得子類可以不改變乙個演算法的結...