第8講 使用三層結構開發(fā)數(shù)據(jù)庫應用系統(tǒng)_第1頁
第8講 使用三層結構開發(fā)數(shù)據(jù)庫應用系統(tǒng)_第2頁
第8講 使用三層結構開發(fā)數(shù)據(jù)庫應用系統(tǒng)_第3頁
第8講 使用三層結構開發(fā)數(shù)據(jù)庫應用系統(tǒng)_第4頁
第8講 使用三層結構開發(fā)數(shù)據(jù)庫應用系統(tǒng)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第8章 使用三層結構開發(fā)數(shù)據(jù)庫應用系統(tǒng)技能目標使用三層結構開發(fā)項目體會到使用三層結構開發(fā)的優(yōu)勢為什么需要三層結構服務員只管接待客人廚師只管烹炒客人要的美食采購員只管按客人需求采購肉,海鮮,蔬菜他們各負其責共同協(xié)作為客人提供美食顧客服務員廚師采購員飯店飯店服務員廚師采購員為什么需要三層結構離職、請假離職、請假其他服其他服務員代替務員代替離職、請假離職、請假離職、請假離職、請假其他廚其他廚師代替師代替其他采其他采購員代替購員代替服務員廚師采購員為什么需要三層結構三層結構軟件模型三層結構軟件模型 表示層表示層 業(yè)務邏輯層業(yè)務邏輯層 數(shù)據(jù)訪問層數(shù)據(jù)訪問層 軟件軟件系統(tǒng)系統(tǒng) 飯店飯店 為什么需要三層結構

2、:登錄實現(xiàn)部分:登錄實現(xiàn)部分(LoginForm類類)代碼代碼我們從三方面對登錄實現(xiàn)部分代碼進行分析我們從三方面對登錄實現(xiàn)部分代碼進行分析1、界面控件數(shù)據(jù)綁定實現(xiàn)、界面控件數(shù)據(jù)綁定實現(xiàn)2、邏輯判斷實現(xiàn)、邏輯判斷實現(xiàn)3、數(shù)據(jù)庫訪問實現(xiàn)、數(shù)據(jù)庫訪問實現(xiàn)首先我們看一下界面部分的關鍵代碼首先我們看一下界面部分的關鍵代碼 為什么需要三層結構 / 登錄登錄 private void btnLogIn_Click(object sender, EventArgs e) /. if (ValidateInput() / 調(diào)用用戶驗證方法調(diào)用用戶驗證方法 isValidUser = ValidateUser(c

3、boLogInType.Text, txtLogInId.Text, txtLogInPwd.Text, ref message);/ 如果是合法用戶,顯示相應的窗體如果是合法用戶,顯示相應的窗體 /. 界面層實現(xiàn)界面層實現(xiàn) 為什么需要三層結構 public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) int count = 0; / 數(shù)據(jù)庫查詢的結果數(shù)據(jù)庫查詢的結果 bool result = false; / 返回值,是否找到該用戶返回值,是否找到該用戶 /

4、 查詢是否存在匹配的用戶名和密碼查詢是否存在匹配的用戶名和密碼 if (loginType= “管理員管理員”) / 判斷判斷是否是是否是管理員用戶管理員用戶 /數(shù)據(jù)訪問實現(xiàn)代碼數(shù)據(jù)訪問實現(xiàn)代碼. else if (loginType = 學員學員) /數(shù)據(jù)訪問實現(xiàn)代碼數(shù)據(jù)訪問實現(xiàn)代碼. return result; 邏輯判邏輯判斷實現(xiàn)斷實現(xiàn)用戶登錄實現(xiàn)方法用戶登錄實現(xiàn)方法 為什么需要三層結構 public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) /. /

5、查詢是否存在匹配的用戶名和密碼查詢是否存在匹配的用戶名和密碼/ 查詢用查詢用sql語句語句 string sql = string.Format( SELECT COUNT(*) FROM Admin WHERE LogInId=0 AND LogInPwd=1, txtLogInId.Text txtLogInPwd.Text );/./ 查詢用查詢用sql語句語句 string sql = string.Format( SELECT COUNT(*) FROM Student WHERE LogInId=0 AND LogInPwd=1,txtLogInId, txtLogInPwd);

6、管理員信息數(shù)據(jù)訪問管理員信息數(shù)據(jù)訪問 用戶登錄實現(xiàn)方法用戶登錄實現(xiàn)方法通過分析我們得到結論是?通過分析我們得到結論是? 學員信息數(shù)據(jù)訪問學員信息數(shù)據(jù)訪問為什么需要三層結構1、數(shù)據(jù)庫訪問和用戶類型判斷邏輯放在一起實現(xiàn)、數(shù)據(jù)庫訪問和用戶類型判斷邏輯放在一起實現(xiàn)2、用戶界面層直接調(diào)用數(shù)據(jù)訪問實現(xiàn)、用戶界面層直接調(diào)用數(shù)據(jù)訪問實現(xiàn)3、整個系統(tǒng)功能放在同一項目中實現(xiàn)、整個系統(tǒng)功能放在同一項目中實現(xiàn)結論是:結論是:從結論可知,我們開發(fā)的兩層結構應用系統(tǒng)有哪些局限性?從結論可知,我們開發(fā)的兩層結構應用系統(tǒng)有哪些局限性? 為什么需要三層結構兩層結構:三層結構:用戶界面用戶界面業(yè)務邏輯業(yè)務邏輯數(shù)據(jù)訪問數(shù)據(jù)訪問兩層

7、結構軟件模型兩層結構軟件模型數(shù)據(jù)數(shù)據(jù)訪問訪問業(yè)務業(yè)務邏輯邏輯用戶用戶界面界面三層結構軟件模型三層結構軟件模型當數(shù)據(jù)庫或當數(shù)據(jù)庫或用戶界面發(fā)用戶界面發(fā)生改變時需生改變時需要重新開發(fā)要重新開發(fā)整個系統(tǒng)整個系統(tǒng)當數(shù)據(jù)庫或當數(shù)據(jù)庫或用戶界面發(fā)用戶界面發(fā)生改變時不生改變時不需要重新開需要重新開發(fā),只做簡發(fā),只做簡單調(diào)整即可單調(diào)整即可什么是三層結構表示層表示層 業(yè)務邏輯層業(yè)務邏輯層 數(shù)據(jù)訪問層數(shù)據(jù)訪問層 為用戶提供為用戶提供交互操作界面交互操作界面 負責關鍵業(yè)務的負責關鍵業(yè)務的處理和數(shù)據(jù)傳遞處理和數(shù)據(jù)傳遞 實現(xiàn)數(shù)實現(xiàn)數(shù)據(jù)庫訪問據(jù)庫訪問 服務員服務員 廚師廚師 采購員采購員 什么是三層結構表示層: 為用戶提

8、供一種交互式操作界面為用戶提供一種交互式操作界面 什么是三層結構業(yè)務邏輯層是表示層與數(shù)據(jù)訪問層之間的橋梁,負責數(shù)據(jù)處理、傳遞。是表示層與數(shù)據(jù)訪問層之間的橋梁,負責數(shù)據(jù)處理、傳遞。 用戶請求數(shù)據(jù)用戶請求數(shù)據(jù)用戶請求數(shù)據(jù)用戶請求數(shù)據(jù)/switch (type) case 管理員管理員: loginPwd = GetAdminLoginPwd(loginID); break; case 學員學員: loginPwd = GetStudentLoginPwd(loginID); break; / 什么是三層結構數(shù)據(jù)訪問層用戶請求數(shù)據(jù)用戶請求數(shù)據(jù)ADO.NETSQL命令實現(xiàn)對數(shù)據(jù)的保存和讀取操作實現(xiàn)對數(shù)

9、據(jù)的保存和讀取操作 /.conn.Open();SqlDataReader objReader = objCommand.ExecuteReader();if (objReader.Read() studentlist.Add(objReaderLoginPwd); studentlist.Add(objReaderUserStateId); objReader.Dispose();conn.Close();/.什么是三層結構三層之間依賴關系表示層表示層業(yè)務邏輯層業(yè)務邏輯層數(shù)據(jù)訪問層數(shù)據(jù)訪問層什么是三層結構三層之間的數(shù)據(jù)傳遞方向業(yè)務邏輯層業(yè)務邏輯層數(shù)據(jù)訪問層數(shù)據(jù)訪問層表示層表示層客客戶戶請請求

10、求客客戶戶請請求求響響應應數(shù)數(shù)據(jù)據(jù)響響應應數(shù)數(shù)據(jù)據(jù)如何搭建三層結構 如何搭建表示層、業(yè)務邏輯層、數(shù)據(jù)訪問層? 如何實現(xiàn)各層之間的相互依賴?要掌握這一切,我們將整個實現(xiàn)過程分為以下步驟要掌握這一切,我們將整個實現(xiàn)過程分為以下步驟 搭建三層結構步驟1、搭建表示層(創(chuàng)建一個、搭建表示層(創(chuàng)建一個Windows應用應用程序)程序)2、搭建業(yè)務邏輯層(、搭建業(yè)務邏輯層(類庫類庫)3、搭建數(shù)據(jù)訪問層(、搭建數(shù)據(jù)訪問層(類庫類庫)4、添加各層之間的相互依賴、添加各層之間的相互依賴 現(xiàn)在我們打開現(xiàn)在我們打開VS IDE環(huán)境逐層搭建三層結構環(huán)境逐層搭建三層結構 搭建表示層2、在彈出的、在彈出的“新建項目新建項目

11、“窗口中,選擇窗口中,選擇Windows應用程序應用程序選擇選擇語言語言種類種類項目類型項目類型創(chuàng)建解決方案創(chuàng)建解決方案輸入項目名稱輸入項目名稱MySchool選擇項目選擇項目生成路徑生成路徑1、文件、文件 新建新建 項目項目 :創(chuàng)建一個新項目:創(chuàng)建一個新項目搭建業(yè)務邏輯層2、在彈出的、在彈出的“新建項目新建項目”窗口中,選擇類庫窗口中,選擇類庫選擇選擇語言語言種類種類項目類型項目類型項目名稱:項目名稱:MySchoolBLL選擇選擇項目項目路徑路徑選擇選擇“添入解決方案添入解決方案”1、文件、文件 新建新建 項目項目 :創(chuàng)建一個新項目:創(chuàng)建一個新項目搭建數(shù)據(jù)訪問層2、在彈出的、在彈出的“新建

12、項目新建項目“窗口中,選擇類庫窗口中,選擇類庫 選擇選擇語言語言種類種類項目類型項目類型項目名稱:項目名稱:MySchoolDAL選擇選擇項目項目路徑路徑選擇選擇“添入解決方案添入解決方案”如何將三層中各自獨立的項目產(chǎn)生依賴如何將三層中各自獨立的項目產(chǎn)生依賴1、文件、文件 新建新建 項目項目 :創(chuàng)建一個新項目:創(chuàng)建一個新項目 添加各層之間的相互依賴:添加表示層對業(yè)務邏輯層依賴:添加表示層對業(yè)務邏輯層依賴1、右鍵單擊、右鍵單擊“引用引用”選擇選擇“添加引用添加引用” 2、選擇、選擇“項目項目”,選中,選中“邏輯層邏輯層”單擊單擊 確定確定 添加業(yè)務邏輯層對數(shù)據(jù)訪問層的依賴與此類似添加業(yè)務邏輯層對

13、數(shù)據(jù)訪問層的依賴與此類似完成對邏完成對邏輯層的引用輯層的引用為什么需要實體類看“學員信息列表”它不具備它不具備OO的優(yōu)點的優(yōu)點實現(xiàn)數(shù)據(jù)檢索比較繁瑣、易出錯實現(xiàn)數(shù)據(jù)檢索比較繁瑣、易出錯它使數(shù)據(jù)結構暴露在業(yè)務邏輯層和表示層它使數(shù)據(jù)結構暴露在業(yè)務邏輯層和表示層為了消除以上局限性我們需要使用實體類為了消除以上局限性我們需要使用實體類DataSet解析實體對象解析實體對象構建實體對象構建實體對象返回行集返回行集為什么需要實體類處理窗體處理窗體表示層表示層表示層后臺代碼表示層后臺代碼業(yè)務邏輯層業(yè)務邏輯層數(shù)據(jù)訪問層數(shù)據(jù)訪問層數(shù)據(jù)庫數(shù)據(jù)庫用戶請求用戶請求傳遞參數(shù)傳遞參數(shù)展示數(shù)據(jù)展示數(shù)據(jù)返回返回請求數(shù)請求數(shù)據(jù)操

14、作據(jù)操作調(diào)用存儲過程調(diào)用存儲過程返回返回解析實體對象解析實體對象構建實體對象或集合構建實體對象或集合為什么需要實體類從OOP思想考慮 它是完全受控制的對象 它具有面向?qū)ο蟮幕咎卣?它可以自定義行為 它消除了關系數(shù)據(jù)和對象之間的差異 它為我們在關系數(shù)據(jù)庫和對象之間架起一座橋梁它為我們在關系數(shù)據(jù)庫和對象之間架起一座橋梁 什么是實體類管理員管理員數(shù)據(jù)表數(shù)據(jù)表簡單地說就是描述一個業(yè)務實體的類,例如:管理員信息簡單地說就是描述一個業(yè)務實體的類,例如:管理員信息 管理員信息管理員信息對應的實體類對應的實體類三層結構中的實體類:表示層如何使用實體類:表示層如何使用實體類 12三層結構中的實體類:業(yè)務邏輯層

15、如何使用實體類:業(yè)務邏輯層如何使用實體類 業(yè)務邏輯層業(yè)務邏輯層 實實體體對對象象實實體體對對象象12表示層表示層 數(shù)據(jù)訪問層數(shù)據(jù)訪問層 三層結構中的實體類:數(shù)據(jù)訪問層如何使用實體類:數(shù)據(jù)訪問層如何使用實體類 12完成本章任務的步驟實現(xiàn)業(yè)務實體層新增項目MySchoolModels添加其它項目對實體項目的引用添加數(shù)據(jù)表對應的實體類編寫實體類設計用戶界面實現(xiàn)數(shù)據(jù)訪問層實現(xiàn)業(yè)務邏輯層實現(xiàn)表示層數(shù)據(jù)綁定實現(xiàn)業(yè)務實體層選擇選擇語言語言種類種類項目類型項目類型輸入項目名稱輸入項目名稱MySchoolModels選擇項目選擇項目生成路徑生成路徑在解決方案“MySchoolPro” 上單擊右鍵選擇“添加” 新

16、建項目實現(xiàn)業(yè)務實體層類名稱類名稱在 “MySchoolModels”項目上單擊右鍵選擇“添加” 新建項 依次添加“Admin.cs、Class.cs、Grade.cs”實現(xiàn)業(yè)務實體層它是業(yè)務的基礎、數(shù)據(jù)傳遞的載體,它與其他項目的依賴關系是什么?它是業(yè)務的基礎、數(shù)據(jù)傳遞的載體,它與其他項目的依賴關系是什么? 實體類實體類 編寫實體類實現(xiàn)業(yè)務實體層表示層表示層業(yè)務實體業(yè)務實體業(yè)務邏輯業(yè)務邏輯數(shù)據(jù)訪問層數(shù)據(jù)訪問層 實現(xiàn)實現(xiàn)三層三層對業(yè)務實體的依賴對業(yè)務實體的依賴設計用戶界面 3、按需求添加所需窗體,并編輯窗體按需求添加所需窗體,并編輯窗體 1 1、在、在“MySchool”項目上單擊右鍵選擇項目上單

17、擊右鍵選擇“添加添加” 新建項新建項 2、在、在“添加添加新項新項“對話框中選擇對話框中選擇”Windows 窗體窗體” 實現(xiàn)數(shù)據(jù)訪問層 2、在、在“添加添加新項新項“對話框中選擇對話框中選擇”類類” 類名稱類名稱如何實現(xiàn)高效的數(shù)據(jù)訪問呢?我們需要掌握如何實現(xiàn)高效的數(shù)據(jù)訪問呢?我們需要掌握using語句的使用語句的使用 新增類有:新增類有:AdminService.csStudentService.cs 1、在、在“MySchoolDAL”項目上單擊右鍵選擇項目上單擊右鍵選擇“添加添加” 新建項新建項 實現(xiàn)數(shù)據(jù)訪問層:用戶登錄用戶登錄 1、在數(shù)據(jù)訪問實現(xiàn)類中引用業(yè)務實體項目命名空間、在數(shù)據(jù)訪問

18、實現(xiàn)類中引用業(yè)務實體項目命名空間2、實例化、實例化SqlConnection對象,實現(xiàn)數(shù)據(jù)庫連接對象,實現(xiàn)數(shù)據(jù)庫連接3、實例化、實例化SqlCommand對象,執(zhí)行對象,執(zhí)行SQL命令命令4、實例化、實例化SqlDataReader對象,讀取數(shù)據(jù)對象,讀取數(shù)據(jù)5、使用實體類傳遞信息、使用實體類傳遞信息6、回顧、回顧List的使用的使用實現(xiàn)業(yè)務邏輯層 2、在、在“添加添加新項新項“對話框中對話框中 選擇選擇”類類” 類名稱類名稱新增類有:新增類有:LoginManager.cs如何實現(xiàn)業(yè)務邏輯功能?如何實現(xiàn)業(yè)務邏輯功能?1、在、在“MySchoolBLL”項目上單擊右鍵選擇項目上單擊右鍵選擇“添加添加” 新建項新建項 實現(xiàn)業(yè)務邏輯層:用戶登錄用戶登錄 1、回顧第二章的實現(xiàn)、回顧第二章的實現(xiàn)2、在業(yè)務邏輯處理類中引用數(shù)據(jù)訪問層、業(yè)務實體層命名空間、在業(yè)務邏輯處理類中引用數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論