accp4.0s2-accp5.0y2轉(zhuǎn)換課程理論部分教學(xué)tp8v1_第1頁(yè)
accp4.0s2-accp5.0y2轉(zhuǎn)換課程理論部分教學(xué)tp8v1_第2頁(yè)
accp4.0s2-accp5.0y2轉(zhuǎn)換課程理論部分教學(xué)tp8v1_第3頁(yè)
accp4.0s2-accp5.0y2轉(zhuǎn)換課程理論部分教學(xué)tp8v1_第4頁(yè)
accp4.0s2-accp5.0y2轉(zhuǎn)換課程理論部分教學(xué)tp8v1_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、使用三層結(jié)構(gòu)開發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)第八章案例展示:MySchoolPro 三層結(jié)構(gòu)最終版演示:HotelManager演示回顧標(biāo)識(shí)一個(gè)類可序列化的特性是什么?反射的主要應(yīng)用是什么?預(yù)習(xí)檢查1、三層結(jié)構(gòu)劃分為哪三層?2、實(shí)體類在三層結(jié)構(gòu)中的主要作用是什么?3、抽象工廠的職責(zé)是什么?本章任務(wù)完成聯(lián)機(jī)考試系統(tǒng)三層結(jié)構(gòu)劃分:表示層MySchool業(yè)務(wù)邏輯層MySchoolBLL數(shù)據(jù)訪問(wèn)層MySchoolDAL用三層結(jié)構(gòu)實(shí)現(xiàn)不同類型用戶登錄升級(jí)我們的聯(lián)機(jī)考試系統(tǒng)支持多數(shù)據(jù)庫(kù)訪問(wèn)Access數(shù)據(jù)庫(kù)訪問(wèn) SqlServer數(shù)據(jù)庫(kù)訪問(wèn) 目標(biāo)使用三層結(jié)構(gòu)開發(fā)項(xiàng)目體會(huì)到使用三層結(jié)構(gòu)開發(fā)的優(yōu)勢(shì)使用抽象工廠設(shè)計(jì)模式為什么

2、需要三層結(jié)構(gòu)服務(wù)員只管接待客人廚師只管烹炒客人要的美食采購(gòu)員只管按客人需求采購(gòu)肉,海鮮,蔬菜他們各負(fù)其責(zé)共同協(xié)作為客人提供美食顧客服務(wù)員廚師采購(gòu)員飯店服務(wù)員廚師采購(gòu)員為什么需要三層結(jié)構(gòu)離職、請(qǐng)假其他服務(wù)員代替離職、請(qǐng)假離職、請(qǐng)假其他廚師代替其他采購(gòu)員代替服務(wù)員廚師采購(gòu)員為什么需要三層結(jié)構(gòu)三層結(jié)構(gòu)軟件模型 表示層 業(yè)務(wù)邏輯層 數(shù)據(jù)訪問(wèn)層 軟件系統(tǒng) 飯店 為什么需要三層結(jié)構(gòu)回顧我們S1做的聯(lián)機(jī)考試系統(tǒng) 為什么需要三層結(jié)構(gòu):登錄實(shí)現(xiàn)部分(LoginForm類)代碼結(jié)構(gòu)我們從三方面對(duì)登錄實(shí)現(xiàn)部分代碼進(jìn)行分析1、界面控件數(shù)據(jù)綁定實(shí)現(xiàn)2、邏輯判斷實(shí)現(xiàn)3、數(shù)據(jù)庫(kù)訪問(wèn)實(shí)現(xiàn)首先我們看一下界面部分的關(guān)鍵代碼 為什

3、么需要三層結(jié)構(gòu) / 登錄 private void btnLogIn_Click(object sender, EventArgs e) /. if (ValidateInput() / 調(diào)用用戶驗(yàn)證方法 isValidUser = ValidateUser(cboLogInType.Text, txtLogInId.Text, txtLogInPwd.Text, ref message);/ 如果是合法用戶,顯示相應(yīng)的窗體 /. 界面層實(shí)現(xiàn) 為什么需要三層結(jié)構(gòu) public bool ValidateUser(string loginType, string loginId, string

4、loginPwd, ref string message) int count = 0; / 數(shù)據(jù)庫(kù)查詢的結(jié)果 bool result = false; / 返回值,是否找到該用戶 / 查詢是否存在匹配的用戶名和密碼 if (loginType= 管理員) / 判斷管理員用戶 /數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)代碼. else if (loginType = 學(xué)員) /數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)代碼. return result; 邏輯判斷實(shí)現(xiàn)用戶登錄實(shí)現(xiàn)方法 為什么需要三層結(jié)構(gòu) public bool ValidateUser(string loginType, string loginId, string loginPwd

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

6、; 管理員信息數(shù)據(jù)訪問(wèn) 用戶登錄實(shí)現(xiàn)方法 通過(guò)分析我們得到結(jié)論是? 學(xué)員信息數(shù)據(jù)訪問(wèn) 為什么需要三層結(jié)構(gòu)1、數(shù)據(jù)庫(kù)訪問(wèn)和用戶類型判斷邏輯放在一起實(shí)現(xiàn)2、用戶界面層直接調(diào)用數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)3、整個(gè)系統(tǒng)功能放在同一項(xiàng)目中實(shí)現(xiàn)結(jié)論是:從結(jié)論可知,我們開發(fā)的兩層結(jié)構(gòu)應(yīng)用系統(tǒng)有哪些局限性? 為什么需要三層結(jié)構(gòu)我們開發(fā)的兩層結(jié)構(gòu)有哪些局限性?難以適應(yīng)需求變化不易維護(hù)安全性差為什么需要三層結(jié)構(gòu)兩層結(jié)構(gòu):三層結(jié)構(gòu):數(shù)據(jù)庫(kù)用戶界面業(yè)務(wù)邏輯數(shù)據(jù)訪問(wèn)兩層結(jié)構(gòu)軟件模型數(shù)據(jù)庫(kù)數(shù)據(jù)訪問(wèn)業(yè)務(wù)邏輯用戶界面三層結(jié)構(gòu)軟件模型當(dāng)數(shù)據(jù)庫(kù)或用戶界面發(fā)生改變時(shí)需要重新開發(fā)整個(gè)系統(tǒng)當(dāng)數(shù)據(jù)庫(kù)或用戶界面發(fā)生改變時(shí)不需要重新開發(fā),只做簡(jiǎn)單調(diào)整即可什

7、么是三層結(jié)構(gòu)表示層 業(yè)務(wù)邏輯層 數(shù)據(jù)訪問(wèn)層 數(shù) 據(jù) 庫(kù)為用戶提供交互操作界面 負(fù)責(zé)關(guān)鍵業(yè)務(wù)的處理和數(shù)據(jù)傳遞 實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn) 服務(wù)員 廚師 采購(gòu)員 什么是三層結(jié)構(gòu)表示層: 為用戶提供一種交互式操作界面 什么是三層結(jié)構(gòu)業(yè)務(wù)邏輯層是表示層與數(shù)據(jù)訪問(wèn)層之間的橋梁,負(fù)責(zé)數(shù)據(jù)處理、傳遞。 用戶請(qǐng)求數(shù)據(jù)用戶請(qǐng)求數(shù)據(jù)/switch (type) case 管理員: loginPwd = GetAdminLoginPwd(loginID); break; case 學(xué)員: loginPwd = GetStudentLoginPwd(loginID); break; / 什么是三層結(jié)構(gòu)數(shù)據(jù)訪問(wèn)層數(shù) 據(jù) 庫(kù)用戶請(qǐng)求

8、數(shù)據(jù) SQL命令實(shí)現(xiàn)對(duì)數(shù)據(jù)的保存和讀取操作 /.conn.Open();SqlDataReader objReader = mand.ExecuteReader();if (objReader.Read() studentlist.Add(objReaderLoginPwd); studentlist.Add(objReaderUserStateId); objReader.Dispose();conn.Close();/.什么是三層結(jié)構(gòu)三層之間依賴關(guān)系表示層業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)層什么是三層結(jié)構(gòu)三層之間的數(shù)據(jù)傳遞方向業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)層表示層客戶請(qǐng)求客戶請(qǐng)求響應(yīng)數(shù)據(jù)響應(yīng)數(shù)據(jù)如何搭建三層結(jié)構(gòu)如何搭

9、建表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層?如何實(shí)現(xiàn)各層之間的相互依賴?要掌握這一切,我們將整個(gè)實(shí)現(xiàn)過(guò)程分為以下步驟 搭建三層結(jié)構(gòu)步驟1、搭建表示層(創(chuàng)建一個(gè)Windows應(yīng)用程序)2、搭建業(yè)務(wù)邏輯層(類庫(kù))3、搭建數(shù)據(jù)訪問(wèn)層(類庫(kù))4、添加各層之間的相互依賴 現(xiàn)在我們打開VS IDE環(huán)境逐層搭建三層結(jié)構(gòu) 搭建表示層2、在彈出的“新建項(xiàng)目“窗口中,選擇Windows應(yīng)用程序選擇語(yǔ)言種類項(xiàng)目類型創(chuàng)建解決方案輸入項(xiàng)目名稱MySchool選擇項(xiàng)目生成路徑1、文件 新建 項(xiàng)目 :創(chuàng)建一個(gè)新項(xiàng)目搭建業(yè)務(wù)邏輯層2、在彈出的“新建項(xiàng)目”窗口中,選擇類庫(kù)選擇語(yǔ)言種類項(xiàng)目類型項(xiàng)目名稱:MySchoolBLL選擇項(xiàng)目路徑選

10、擇“添入解決方案”1、文件 新建 項(xiàng)目 :創(chuàng)建一個(gè)新項(xiàng)目搭建數(shù)據(jù)訪問(wèn)層2、在彈出的“新建項(xiàng)目“窗口中,選擇類庫(kù) 選擇語(yǔ)言種類項(xiàng)目類型項(xiàng)目名稱:MySchoolDAL選擇項(xiàng)目路徑選擇“添入解決方案”如何將三層中各自獨(dú)立的項(xiàng)目產(chǎn)生依賴1、文件 新建 項(xiàng)目 :創(chuàng)建一個(gè)新項(xiàng)目 添加各層之間的相互依賴:添加表示層對(duì)業(yè)務(wù)邏輯層依賴1、右鍵單擊“引用”選擇“添加引用” 2、選擇“項(xiàng)目”,選中“邏輯層”單擊 確定 添加業(yè)務(wù)邏輯層對(duì)數(shù)據(jù)訪問(wèn)層的依賴與此類似完成對(duì)邏輯層的引用為什么需要實(shí)體類回顧我們第二章做的“學(xué)員信息列表”數(shù) 據(jù) 庫(kù)它不具備OO的優(yōu)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)檢索比較繁瑣、易出錯(cuò)它使數(shù)據(jù)結(jié)構(gòu)暴露在業(yè)務(wù)邏輯層和表示

11、層為了消除以上局限性我們需要使用實(shí)體類DataSet解析實(shí)體對(duì)象構(gòu)建實(shí)體對(duì)象返回行集為什么需要實(shí)體類處理窗體表示層表示層后臺(tái)代碼業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)層數(shù)據(jù)庫(kù)用戶請(qǐng)求傳遞參數(shù)展示數(shù)據(jù)返回請(qǐng)求數(shù)據(jù)操作調(diào)用存儲(chǔ)過(guò)程返回解析實(shí)體對(duì)象構(gòu)建實(shí)體對(duì)象或集合為什么需要實(shí)體類從OOP思想考慮它是完全受控制的對(duì)象 它具有面向?qū)ο蟮幕咎卣魉梢宰远x行為它消除了關(guān)系數(shù)據(jù)和對(duì)象之間的差異 它為我們?cè)陉P(guān)系數(shù)據(jù)庫(kù)和對(duì)象之間架起一座橋梁 什么是實(shí)體類管理員數(shù)據(jù)表簡(jiǎn)單地說(shuō)就是描述一個(gè)業(yè)務(wù)實(shí)體的類,例如:管理員信息 管理員信息對(duì)應(yīng)的實(shí)體類三層結(jié)構(gòu)中的實(shí)體類:表示層如何使用實(shí)體類 12三層結(jié)構(gòu)中的實(shí)體類:業(yè)務(wù)邏輯層如何使用實(shí)體類

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

13、次添加“Admin.cs、Class.cs、Grade.cs” 類名稱實(shí)現(xiàn)業(yè)務(wù)實(shí)體層4、編寫實(shí)體類 它是業(yè)務(wù)的基礎(chǔ)、數(shù)據(jù)傳遞的載體,它與其他項(xiàng)目的依賴關(guān)系是什么? 實(shí)體類實(shí)現(xiàn)業(yè)務(wù)實(shí)體層5、回顧第一章“三層之間相互依賴”的實(shí)現(xiàn) 6、實(shí)現(xiàn)三層對(duì)業(yè)務(wù)實(shí)體的依賴 表示層業(yè)務(wù)實(shí)體業(yè)務(wù)邏輯數(shù)據(jù)訪問(wèn)層設(shè)計(jì)用戶界面 3、按需求添加所需窗體,并編輯窗體 1、在“MySchool”項(xiàng)目上單擊右鍵選擇“添加” 新建項(xiàng) 2、在“添加新項(xiàng)“對(duì)話框中選擇”Windows 窗體” 實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層 2、在“添加新項(xiàng)“對(duì)話框中選擇”類” 類名稱如何實(shí)現(xiàn)高效的數(shù)據(jù)訪問(wèn)呢?我們需要掌握using語(yǔ)句的使用 新增類有:AdminSe

14、rvice.csStudentService.cs 1、在“MySchoolDAL”項(xiàng)目上單擊右鍵選擇“添加” 新建項(xiàng) 什么是using語(yǔ)句在C#中using語(yǔ)句:用于定義一個(gè)范圍,在此范圍末尾將釋放對(duì)象 public void DeleteStudentByLoginID (string loginID) int studentID = GetStudentIDByLoginID(loginID); using (SqlConnection conn = new SqlConnection(connString) mand mand = new mand(dboOwner + .usp_De

15、leteStudent, conn); mand.CommandType = CommandType.StoredProcedure; mand.Parameters.Add(StudentID, SqlDbType.Int).Value = studentID; conn.Open(); mand.ExecuteNonQuery(); 自動(dòng)釋放數(shù)據(jù)庫(kù)連接資源實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層:用戶登錄 1、在數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)類中引用業(yè)務(wù)實(shí)體項(xiàng)目命名空間2、實(shí)例化SqlConnection對(duì)象,實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接3、實(shí)例化 mand對(duì)象,執(zhí)行SQL命令4、實(shí)例化SqlDataReader對(duì)象,讀取數(shù)據(jù)5、使用實(shí)體類傳遞信

16、息6、回顧List的使用 演示示例:用戶登錄 文件名稱:StudentService.csAdminService.cs實(shí)現(xiàn)業(yè)務(wù)邏輯層 2、在“添加新項(xiàng)“對(duì)話框中 選擇”類” 類名稱新增類有:LoginManager.cs如何實(shí)現(xiàn)業(yè)務(wù)邏輯功能?1、在“MySchoolBLL”項(xiàng)目上單擊右鍵選擇“添加” 新建項(xiàng) 實(shí)現(xiàn)業(yè)務(wù)邏輯層:用戶登錄 1、回顧第二章的實(shí)現(xiàn)2、在業(yè)務(wù)邏輯處理類中引用數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)實(shí)體層命名空間3、實(shí)例化數(shù)據(jù)訪問(wèn)對(duì)象4、調(diào)用數(shù)據(jù)訪問(wèn)功能5、實(shí)現(xiàn)業(yè)務(wù)邏輯處理功能 演示示例:用戶登錄 文件名稱:LoginManager.cs 實(shí)現(xiàn)表示層數(shù)據(jù)綁定:用戶登錄 1、在窗體后臺(tái)實(shí)現(xiàn)類中引用

17、業(yè)務(wù)邏輯層、業(yè)務(wù)實(shí)體層命名空間2、實(shí)例化業(yè)務(wù)邏輯處理對(duì)象和業(yè)務(wù)實(shí)體對(duì)象3、數(shù)據(jù)綁定4、調(diào)用業(yè)務(wù)邏輯層功能 演示示例:用戶登錄 窗體名稱:LoginForm.cs 模式起源:同一問(wèn)題的兩種不同解決方案有什么相似之處 軟件設(shè)計(jì)模式設(shè)計(jì)模式如同此理,它是經(jīng)驗(yàn)的傳承 。地上本沒有路,走得人多了也就成了路。軟件設(shè)計(jì)模式人是一個(gè)經(jīng)驗(yàn)性動(dòng)物 1、每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題的解決方案下面我們回顧一下簡(jiǎn)單工廠設(shè)計(jì)模式 2、設(shè)計(jì)模式描述了軟件設(shè)計(jì)過(guò)程中某一類常見問(wèn)題的一般性的解決方案3、面向?qū)ο笤O(shè)計(jì)模式是對(duì)在特定場(chǎng)景下,解決一般 設(shè)計(jì)問(wèn)題中類與相互通信對(duì)象的描述為什么需要抽象工廠

18、設(shè)計(jì)模式父類產(chǎn)品子類產(chǎn)品A 子類產(chǎn)品B 子類產(chǎn)品C 工廠客戶:簡(jiǎn)單工廠設(shè)計(jì)模式原理結(jié)構(gòu) 什么是抽象工廠設(shè)計(jì)模式什么是抽象工廠設(shè)計(jì)模式抽象工廠 實(shí)體工廠2實(shí)體工廠1抽象產(chǎn)品A抽象產(chǎn)品B實(shí)體產(chǎn)品B1實(shí)體產(chǎn)品B2實(shí)體產(chǎn)品A1實(shí)體產(chǎn)品A2客戶 :抽象工廠設(shè)計(jì)模式原理結(jié)構(gòu) 什么是抽象工廠設(shè)計(jì)模式1、提供一系列相互依賴對(duì)象的創(chuàng)建工作2、封裝對(duì)象常規(guī)的創(chuàng)建方法(new)3、提供統(tǒng)一調(diào)用數(shù)據(jù)訪問(wèn)方法的方式4、避免調(diào)用數(shù)據(jù)訪問(wèn)方法和具體對(duì)象創(chuàng)建工作的緊耦合什么是抽象工廠設(shè)計(jì)模型提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,無(wú)需指定它們具體的類 客戶請(qǐng)求 抽象工廠抽象產(chǎn)品如何用抽象工廠設(shè)計(jì)模式構(gòu)建我們的數(shù)據(jù)訪問(wèn)層?

19、 如何使用抽象工廠設(shè)計(jì)模式1、用抽象工廠生產(chǎn)抽象產(chǎn)品2、用實(shí)體工廠生產(chǎn)實(shí)體產(chǎn)品3、用抽象產(chǎn)品提供實(shí)體產(chǎn)品訪問(wèn)接口4、用實(shí)體產(chǎn)品實(shí)現(xiàn)自己的功能:抽象工廠設(shè)計(jì)模式中各個(gè)象的主要功能、職責(zé)應(yīng)用示例:在MySchoolPro數(shù)據(jù)訪問(wèn)層使用抽象工廠設(shè)計(jì)模式 SQLServer實(shí)體工廠學(xué)員抽象產(chǎn)品抽象工廠Access實(shí)體工廠管理員抽象產(chǎn)品Access學(xué)員實(shí)體產(chǎn)品SQL Server學(xué)員實(shí)體產(chǎn)品客戶Access管理員實(shí)體產(chǎn)品SQL Server管理員實(shí)體產(chǎn)品完成本章任務(wù)的步驟搭建數(shù)據(jù)訪問(wèn)層基本架構(gòu)新增抽象工廠項(xiàng)目新增抽象產(chǎn)品項(xiàng)目實(shí)現(xiàn)項(xiàng)目間的依賴實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)對(duì)象創(chuàng)建功能業(yè)務(wù)邏輯層調(diào)用數(shù)據(jù)訪問(wèn)層

20、方法實(shí)體工廠實(shí)體產(chǎn)品抽象產(chǎn)品數(shù)據(jù)訪問(wèn)層 抽象工廠在解決方案“MySchoolPro” 上單擊右鍵選擇“添加” 新建項(xiàng)目新增抽象工廠項(xiàng)目選擇語(yǔ)言種類項(xiàng)目類型輸入項(xiàng)目名稱MySchoolDALFactory選擇項(xiàng)目生成路徑在解決方案“MySchoolPro” 上單擊右鍵選擇“添加” 新建項(xiàng)目新增抽象產(chǎn)品項(xiàng)目選擇語(yǔ)言種類項(xiàng)目類型輸入項(xiàng)目名稱MySchoolIDAL選擇項(xiàng)目生成路徑實(shí)現(xiàn)項(xiàng)目之間的依賴MySchoolMySchoolBLLMySchoolModelsMySchoolIDALMySchoolDALFactory抽象工廠實(shí)體工廠抽象產(chǎn)品實(shí)體產(chǎn)品箭頭方向從引用項(xiàng)目指向被引用項(xiàng)目MySchool

21、DAL 實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)接口接口名稱根據(jù)信息類別不同,分別添加不同信息的訪問(wèn)接口 在“MySchoolIDAL”項(xiàng)目上單擊右鍵選擇“添加” 新建項(xiàng)實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)接口:使用接口提供數(shù)據(jù)訪問(wèn) 如何實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)? 1、將相關(guān)信息的數(shù)據(jù)訪問(wèn)放在同一個(gè)接口中2、根據(jù)需求定義接口中的數(shù)據(jù)訪問(wèn)方法 演示示例:用戶登錄數(shù)據(jù)訪問(wèn)接口定義接口IStudentService.csIAdminService.cs實(shí)現(xiàn)接口實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)接口:實(shí)現(xiàn)用戶登錄數(shù)據(jù)訪問(wèn)接口如何封裝數(shù)據(jù)訪問(wèn)對(duì)象的創(chuàng)建? 1、將接口的實(shí)現(xiàn)分:Sql Server 和Access兩種2、將不同的數(shù)據(jù)庫(kù)訪問(wèn)實(shí)現(xiàn)放在不同的命名空間下 演示示例:實(shí)現(xiàn)用戶登錄數(shù)據(jù)

22、訪問(wèn)文件名稱:StudentService.csAdminService.cs實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)對(duì)象創(chuàng)建功能類名稱新增抽象工廠類:AbstracterDALFactory.cs在“MySchoolDALFactory”項(xiàng)目上單擊右鍵選擇“添加” 新建項(xiàng)編碼實(shí)現(xiàn)實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)對(duì)象創(chuàng)建功能:在抽象工廠類中用抽象方法提供數(shù)據(jù)訪問(wèn)對(duì)象的創(chuàng)建/. public abstract IStudentService CreateStudentService(); public abstract IAdminService CreateAdminService();/.抽象工廠提供抽象產(chǎn)品如何選擇實(shí)體工廠? /實(shí)體工廠

23、的選擇應(yīng)該用反射實(shí)現(xiàn), 便于學(xué)員理解這里用開關(guān)語(yǔ)句實(shí)現(xiàn) public static AbstractDALFactory ChooseFactory() string dbType = ConfigurationManager.AppSettings“DBType”.ToString(); AbstractDALFactory factory = null; switch (dbType) case Sql: factory = new SqlDALFactory(); break; case Access: factory = new AccessDALFactory(); break; return factory; 實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)對(duì)象創(chuàng)建功能如何通過(guò)實(shí)體工廠實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)對(duì)象的創(chuàng)建?實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)對(duì)象創(chuàng)建功能類名稱新增實(shí)體工廠類:SqlDALFactory.csAcces

溫馨提示

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

評(píng)論

0/150

提交評(píng)論