Best practise 封裝儲存過程

2021-08-25 05:02:24 字數 1147 閱讀 2688

如果我們寫了乙個儲存過程,比如叫做

delete_dept

,功能非常簡單——就是刪除指定

id的部門:

create procedure [

dbo]

.[delete_dept

]@id 

intas

delete  from

dept

where id=@id

return 0

那麼這樣的儲存過程,我們應該在**中如何呼叫呢?

現在的大部分做法都是採用乙個封裝的函式,傳遞儲存過程名稱、引數為函式的引數。還是以這個儲存過程為例,假設方面名稱為

runproc

,那麼呼叫的方法就是:

runproc

("delete_dept",1);

這是最簡單的,也是最容易想到的做法。為了方便我們給它取個名字:

runproc

方法,可是直觀的做法,不一定適合大型的產品工程。在客戶端**中,如果能夠這樣做,是不是更好:

delete_

dept

(1);

為了方便,也給它取個名字:

localfunction

方法。為此我們只需要實現乙個函式就行了:

void

delete_dept

(int

id)儘管**是等效的,**的可讀性也差不多,但是從架構角度看,後者要比前者要好,因為後者改善了不同層次**的耦合關係。既然談到了關係,我們用圖的方式來看更好。看看資料庫層和應用層的耦合關係的對比:

可是連線不僅僅沒有減少,反而多了乙個啊?也許你要提出這樣的疑問。這裡最重要的點在於,層之間的耦合減少了。從原來的

3個到現在的

1個。層之內的聯絡可以多,這就叫做內聚

,層之間的呼叫要少,這就叫做低耦合。這是高內聚低耦合的乙個基本原則。儘管客戶**層之間的耦合多了,但是可以充分利用類的封裝、繼承、多型等特性,從而讓**更清晰。我們來看看好處: a.

sql和c#

是不同型別的,本來應該有隔離層 b.

讓儲存過程和函式呼叫一致,從而對客戶端**更加友好 c.

同類的儲存過程封裝函式都可以放到乙個類內,做好歸類工作 d.

呼叫都會轉成強型別

不僅如此,更加重要的是,這樣做了後,對變化的適應能力更強,

等保03 等保測評

差分整改 重點 等級測評 等保專案交付存在的問題 等級保護工作角色分工 等級保護整體流程介紹 各個階段產出的文件 定級備案過程及工作內容 依據定級指南確定目標系統的安全保護等級,同時也是對安全保護等級確定過程的說明。1.目標業務系統描述 系統的基本功能 系統的責任部門 系統的網路結構及部署情況 採取...

sp(SharedPreferences)儲存物件

其實主要是利用物件輸出流 objectoutputstream 將物件轉換為二進位制資料,然後將二進位制資料轉換為字串,再利用sp儲存字串即可。核心 儲存物件 針對複雜型別儲存 物件 注意 要儲存的物件必須序列化 param key param object public void setobjec...

上海鎮保城保四金比例

quote 本文 鎮保和城保的區別 a.繳費基數不同 如果是城保,那麼就應該按第乙個月的全部稅前實際工資來算 並非試用期工資總額 當然這是相對畢業生而言的,如果是已經工作過的人則按照去年你的月平均工資來算,但 請注意很多公司並不是按照法律規定的繳費基數給的,通常會給乙個固定的相對較低的基 數 如20...