狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

對存儲過程代替SQL語句的討論

admin
2011年5月4日 15:24 本文熱度 2996

在項目開發中,一直有一種聲音,要用存儲過程代替SQL語句,下文就將對其中的一些觀點進行辨析,供您參考。


1.如果說存儲過程多了,不好找,那你該檢討一下您的命名習慣是否規范是否達意,如果是多人合作的團隊,大家更應該對于存儲過程的命名有一致的規則,當然,不只存儲過程需要這樣,其他部分也都要需要這樣.好的存儲過程命名最好能包含操作名稱(insert/update/get/list等),要操作的對象名稱(表名)等,這樣,即便你的存儲過程再多,一樣也能快速找到要改的那個,這樣命名,還可以讓你通過SQL 2000的對象查找功能一次性的按表名找到與此表相關的所有存儲過程的名稱,同理,你用LIST來查,也可以查到所有LIST功能的存儲過程


2,對于第二種觀點,我是不大同意的,在過往的例子中,我發現,將SQL語句從代碼中分離出來,帶來的好處遠遠大于壞處,而且這樣更符合分層的原則,如果我們將SQL語句嵌入到代碼中,當你僅需要多獲取一個字段的值,或者對SQL語句本身做一些修改時,你就必須要編譯,然后上傳DLL,而如果你是用存儲過程的話,你直接改一下存儲過程就好了,而且,將二者分離,DBA寫好存儲過程,列好說明及使用規則,交給負責寫DAL層的同學,DAL層的同學閉上眼無需了解SQL語句,也可完成他的工作,因此,從這個角度來說,很好的分隔了工作,不必要要寫DAL層的同學也是SQL存儲過程高手了


3,防止注入攻擊,如果不用存儲過程而用嵌入式SQL,你勢必要為了防止注入攻擊而對輸入的用戶數據做更多的處理工作,例如處理一些SQL敏感字符等


4.更為重要的是,如果你要朝一個表中插入的是一個BINARY內容的時候,難道你會用SQL語句嗎?


5,嵌入式SQL特別是拼貼SQL語句,一向是比較容易出問題的環節,而存儲過程在寫的時候,就經過檢查,儲如漏掉符號,INSERT的字段數目與參數數目不一致的小錯誤,會立即被糾正


6,誰都知道存儲過程是預編譯的


7,如果你是高手,你可以分析并優化存儲過程來提高性能(以前記得看過MS的一個牛人技術支持講述存儲過程分析和優化,非常啟發人)


最常見的是,在實際運用中,為了減少DATASET數據集的大小和提高性能,通常我們只SELECT當前需要的字段,但是,隨著發展,你可以需要其他字段,這時,如果用嵌入SQL,就要修改SQL語句,編譯,再寫上綁定該字段的表達式,但是,如果用存儲過程,你只要綁定表達式,然后給存儲過程中加上這個字段名就可以了.
再如,如果用STRING來拼貼SQL的INSERT語句,那很可能是這樣拼
string strSql="insert into table (id,username,password,address) value ("+Id.ToString()+","+UserName...
這樣拼貼,多加個字段時,一花眼,就拼貼錯了
如果用存儲過程,你頂多用
SqlParameter myPara=new SqlParameter("@field5",Field5);
再在存儲過程里加上這個輸入參數就可以了,和修改一下SQL語句就行了,SQL還會在修改過程中幫你檢查語法
后者顯然比前者用那么多+號與雙引號拼貼出錯的幾率小多了


該文章在 2011/5/4 15:24:30 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved