第04章_數(shù)據(jù)庫操作_第1頁
第04章_數(shù)據(jù)庫操作_第2頁
第04章_數(shù)據(jù)庫操作_第3頁
第04章_數(shù)據(jù)庫操作_第4頁
第04章_數(shù)據(jù)庫操作_第5頁
已閱讀5頁,還剩175頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第04章數(shù)據(jù)庫操作目錄1. 典型案例2. SQL Server數(shù)據(jù)庫基礎(chǔ)3.ADO.NET操作數(shù)據(jù)庫4. 數(shù)據(jù)源與數(shù)據(jù)綁定5. 實(shí)體數(shù)據(jù)模型操作數(shù)據(jù)庫6.Linq7. 小結(jié)8. 習(xí)題戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 案例展現(xiàn):WPF開發(fā)小區(qū)物業(yè)監(jiān)控系統(tǒng)數(shù)據(jù)庫操作n 【案例描述】n WPF開發(fā)小區(qū)物業(yè)監(jiān)控系統(tǒng)中,實(shí)現(xiàn)與接,實(shí)現(xiàn)用戶的注冊和登錄。n 【案例結(jié)果】數(shù)據(jù)庫的連n WPF開發(fā)小區(qū)物業(yè)監(jiān)控系統(tǒng)中,注冊和登錄的界面如圖4-2所示。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-2 用戶注冊和登錄戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 【案

2、例準(zhǔn)備】n 在這個簡單的綜合案例中,會涉及到WPF中有關(guān)數(shù)據(jù)庫等基礎(chǔ)知識。下面就先來掌握這些知識點(diǎn)后,再開始本案例的編程實(shí)現(xiàn)吧!戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育目錄1. 典型案例2. SQL Server數(shù)據(jù)庫基礎(chǔ)3.ADO.NET操作數(shù)據(jù)庫4. 數(shù)據(jù)源與數(shù)據(jù)綁定5. 實(shí)體數(shù)據(jù)模型操作數(shù)據(jù)庫6.Linq7. 小結(jié)8. 習(xí)題戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育2.1 SQL Server集成化開發(fā)環(huán)境n SQL Server是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS。SQL Server 2012是Microsoft公司于2012年推

3、出的最新版本,包括企業(yè)版(Enterprise)、標(biāo) 準(zhǔn) 版 (Standard) 、 商 業(yè) 智 能 版 (Business Intelligence)等。SQL Server 2012可以運(yùn)行于Windows 7 、 Windows Server 2008 、 Windows Vista等Windows系列的多種操作系統(tǒng)。SQL Server 2012作為大型網(wǎng)絡(luò)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可用于大型的數(shù)據(jù)庫管理、大型的聯(lián)機(jī)事務(wù)處理、數(shù)據(jù)倉庫及電子商務(wù)等。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育SQL Server 2012提供圖形化的數(shù)據(jù)庫開發(fā)和管理工具,其中SQLServer

4、Management Studio(簡稱SSMS)就是 SQL Server提供的一種集成化開發(fā)環(huán)境。SSMS工具簡易直觀,可以使用該工具訪問、配置、控制、管理和開發(fā)SQL Server的所有組件。SQL ServerManagement Studio將早起版本的SQL Server中所包含的企業(yè)管理器、查詢分析器和Analysis Manager功能整合到單一的環(huán)境中,使得SQL Server中所有組件協(xié)同工作。SQL Server安裝到系統(tǒng)中后,將作為一個服務(wù)由操作系統(tǒng)監(jiān)控,而SSMS是作為一個單獨(dú)的進(jìn)程運(yùn)行的。打開SSMS并且連接到SQL Server服務(wù)器,具體操作步驟如下:(1)單擊

5、【開始】按鈕,在彈出的菜單中該選擇“所有程序 |Microsoft SQL Server 2012 | SQL Server ManagementStudio”菜單命令,打開 SQL Server的【連接到服務(wù)器】對話框,選擇完相關(guān)信息之后,單擊【連接】按鈕,如圖4-3所示戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-3“連接到服務(wù)器”對話框戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)連接成功進(jìn)入SSMS的主界面,該界面顯示了左側(cè)的【對象資源管理器】窗口,如圖4-4所示。模板資源管理器、解決方案與項(xiàng)目腳本是SSMS中的兩個組件,可以方便用戶在開發(fā)時對數(shù)據(jù)的操作

6、和管理。圖4-4SSMS圖形界面戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育2.2 數(shù)據(jù)庫的日常維護(hù)操作n 數(shù)據(jù)庫的日常維護(hù)操作包括數(shù)據(jù)庫的創(chuàng)建與維護(hù)、數(shù)據(jù)表的創(chuàng)建與維 護(hù)、約束的創(chuàng)建與維護(hù)、索引的創(chuàng)建與維護(hù)。在本節(jié)中將簡單介紹如 何使用SSMS(SQL Server Management Studio)圖形化界面形式進(jìn)行數(shù)據(jù)維護(hù)。n 1數(shù)據(jù)庫的創(chuàng)建在SSMS中創(chuàng)建數(shù)據(jù)庫可按以下步驟進(jìn)行:n (1)啟動SSMS集成環(huán)境,在“對象資源管理器”窗口中,選擇“ 數(shù)據(jù)庫”節(jié)點(diǎn),彈出菜單中選擇“新建數(shù)據(jù)庫”命令,如圖4-5所示。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-5 “

7、新建數(shù)據(jù)庫”窗口戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育(2)在“常規(guī)”標(biāo)簽頁上的數(shù)據(jù)庫名稱文本框中輸入數(shù)據(jù)庫名(如MonitorDB),設(shè)置其所有者,系統(tǒng)會自動生成數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件的邏輯名稱,然后用戶可以根據(jù)項(xiàng)目的實(shí)際需要分別對數(shù) 據(jù)文件和日志文件的初始大小、自動增長方式、容量限制和存儲位置的設(shè)置。另外用戶還可以按【添加】按鈕新建二級數(shù)據(jù)文件,并將二 級數(shù)據(jù)文件保存在不同的路徑下,以拓展數(shù)據(jù)的存儲空間。(3)在“選項(xiàng)”標(biāo)簽頁上設(shè)置數(shù)據(jù)庫的排序規(guī)則、恢復(fù)模式等。在“文件組”標(biāo)簽上可以創(chuàng)建自定義文件組,并將之前創(chuàng)建的二級數(shù)據(jù) 文件存放在自定義文件組或主文件組上統(tǒng)一管理。(

8、4)單擊“確定”按紐,數(shù)據(jù)庫就創(chuàng)建好了,此時在對象資源管理 器中展開中可以看到新建的數(shù)據(jù)庫MonitorDB。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 2數(shù)據(jù)庫的維護(hù)n 對創(chuàng)建好的數(shù)據(jù)庫,可以在SSMS集成環(huán)境下查看數(shù)據(jù)庫的基本信息,并對其進(jìn)行有效的管理和維護(hù)。n (1)查看數(shù)據(jù)庫信息n 在對象資源管理器中,用鼠標(biāo)右鍵單擊要查看的數(shù)據(jù)庫(如MonitorDB),在彈出式菜單中選擇“屬性”,出現(xiàn)如圖4-6所示屬性對話框,然后再分別選擇“常規(guī)”、“文件”、“文件組”、“選項(xiàng)”、“權(quán)限”及“擴(kuò)展屬性” 等選項(xiàng),查看和修改數(shù)據(jù)庫的相關(guān)信息。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新

9、物聯(lián)教育圖4-6 數(shù)據(jù)庫的屬性設(shè)置對話框戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)增加數(shù)據(jù)庫的初始大小n 在“數(shù)據(jù)庫屬性”窗口中,選擇“文件”選項(xiàng),在圖4-5 所示的“初始大小”數(shù)值框中輸入或微調(diào)數(shù)據(jù)文件或日志文件的初始大小,然后單擊【確定】按鈕,保存數(shù)據(jù)文件或日志文件的初始大小設(shè)置。n (3)調(diào)整數(shù)據(jù)庫文件的自動增長大小n 在圖4-5中,通過單擊數(shù)據(jù)文件或日志文件“自動增長”右邊的按鈕,彈出數(shù)據(jù)庫空間自動增長設(shè)置對話框,如圖4-7所示。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-7 數(shù)據(jù)庫空間自動增長設(shè)置戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)

10、教育n (4)收縮數(shù)據(jù)庫空間如果數(shù)據(jù)庫初始代銷或文件自動增長大小的值指定太大,而實(shí)際數(shù)據(jù)庫占用的存儲空間很小,那么就造成了存儲資源的浪費(fèi),這時可以通過數(shù)據(jù)庫的收縮功能進(jìn)行調(diào)整。n 右擊所選中的數(shù)據(jù)庫,在彈出菜單中選擇“任務(wù) | 收縮 |數(shù)據(jù)庫”命令,彈出如圖4-8所示的“收縮數(shù)據(jù)庫”窗口。選中“在釋放未使用空間前重新組織文件”復(fù)選框,輸入收縮比例,單擊【確定】完成數(shù)據(jù)庫的收縮。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-8 收縮數(shù)據(jù)庫戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育(5) 數(shù)據(jù)庫重命名在重命名數(shù)據(jù)庫之前,應(yīng)該確保沒有用戶使用該數(shù)據(jù)庫。右擊所選中 的數(shù)據(jù)庫,

11、在彈出菜單中選擇“重命名”命令。(6) 刪除數(shù)據(jù)庫當(dāng)數(shù)據(jù)庫及其中的數(shù)據(jù)失去利用價值以后,可以刪除數(shù)據(jù)庫以釋放被 其占用的磁盤空間。右擊所選中的數(shù)據(jù)庫,在彈出菜單中選擇“刪除 ”命令,即可刪除數(shù)據(jù)庫。由于刪除一個數(shù)據(jù)庫會刪除所有的數(shù)據(jù)和 該數(shù)據(jù)庫所使用的所有磁盤文件,所以刪除數(shù)據(jù)庫之前應(yīng)格外小心。 刪除之后如果再想恢復(fù),必須要從之前做好的備份中進(jìn)行數(shù)據(jù)庫還原。系統(tǒng)數(shù)據(jù)庫中的master、model和tempdb都不能被刪除,msdb雖然可以被刪除,但刪除msdb后很多服務(wù)(如SQL Server)將無法使用,因?yàn)檫@些服務(wù)在運(yùn)行時會用到msdb。服務(wù)戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物

12、聯(lián)教育n 3數(shù)據(jù)表的創(chuàng)建與維護(hù)n 在SSMS中為用戶提供了方便的圖形化工具來創(chuàng)建和管理表。這里以創(chuàng)建小區(qū)物業(yè)監(jiān)控系統(tǒng)數(shù)據(jù)庫MonitorDB中登陸信息表Table_LoginRecord為例,介紹使用SSMS創(chuàng)建數(shù)據(jù)表的具體步驟。n (1)啟動SSMS集成環(huán)境,在“對象資源管理器”窗口中,依次展開“數(shù)據(jù)庫”的MonitorDB節(jié)點(diǎn)。n (2)在數(shù)據(jù)庫MonitorDB的展開列表中選擇“表”,鼠標(biāo)右擊,從快捷菜單中選擇“新建表”命令,出現(xiàn)創(chuàng)建表對話框,如圖4-9所示。在此輸入表的列名、選擇數(shù)據(jù)類型、數(shù)據(jù)長度與精度,規(guī)定該列數(shù)據(jù)是否允許為空,設(shè)置表格中的各種約束條件。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)

13、世界 育未來創(chuàng)新物聯(lián)教育n 注意:列名必須遵循標(biāo)識符規(guī)則,在一個表中必須唯一。另外除了字符數(shù)據(jù)類型和二進(jìn)制數(shù)據(jù)類型以外,其他數(shù)據(jù)類型都是固定的數(shù)據(jù)長度,不能進(jìn)行長度修改。n (3)進(jìn)行各類約束(如主鍵、外鍵等)的設(shè)置,關(guān)于約束的概念和具體創(chuàng)建方法見后面介紹。n (4)單擊“保存”按紐,輸入表,則該表就被保存到數(shù)據(jù)庫中了。擊“確定”按紐戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-9 使用SSMS創(chuàng)建登陸信息表Table_LoginRecord戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育對創(chuàng)建好的數(shù)據(jù)表,可以在SSMS集成環(huán)境下查看或修改數(shù)據(jù)表的基本信息,并對其進(jìn)行有效的

14、管理和維護(hù)。右擊所選中的表,在彈出菜 單中選擇“重命名”命令可以進(jìn)行表的重命名,選擇“刪除”命令可 以進(jìn)行表的刪除。4數(shù)據(jù)記錄的輸入與刪除表是記錄的容器,表結(jié)構(gòu)創(chuàng)建完成后,即可向表中添加記錄。在實(shí)際軟件項(xiàng)目中,一般需要利用C#、JAVA等高級語言開發(fā)數(shù)據(jù)錄入人機(jī)交互界面,然后調(diào)用Insert語句實(shí)現(xiàn)記錄的添加。在 SSMS中也可以直接向表中輸入記錄。右擊要輸入記錄的表, 在彈出菜單中選擇“編輯前200行”命令,彈出“數(shù)據(jù)錄入”窗口,如圖4-10所示。在空白行輸入相關(guān)的數(shù)據(jù)。同 時也可以在此窗口中修改之前已經(jīng)輸入的數(shù)據(jù)。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-10 “數(shù)據(jù)錄入

15、”窗口戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 直接在表中刪除記錄的方法是:在圖4-10中,選定要刪除的記錄,右擊在彈出菜單中選擇“刪除”命令。n 注意:向表中添加、修改、刪除記錄要受到各種完整性約束的限制。n 5約束的創(chuàng)建與維護(hù)n 約束是實(shí)現(xiàn)數(shù)據(jù)完整性、一致性和有效性的重要方法,下面介紹在SSMS中使用圖形化工具來創(chuàng)建和維護(hù)約束。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (1)主鍵約束n 在“對象資源管理器”中,打開要設(shè)置主鍵的表,進(jìn)入“ 表設(shè)計器”窗口。選定要設(shè)置主鍵的列或列的組合,右擊彈出“表結(jié)構(gòu)維護(hù)”菜單,如圖4-9所示,選擇“設(shè)置主鍵”命令,完成主鍵的

16、設(shè)置。主鍵構(gòu)成字段前出現(xiàn)圖標(biāo)。n 主鍵的移除與主鍵的設(shè)置方法類似。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)外鍵約束n 外鍵約束主要用于維護(hù)兩個表之間的一致性,即外鍵的值必須引用另一表主鍵的值。例如用戶登陸信息表中Table_LoginRecord的用戶名UserName應(yīng)與用戶表Users中的唯一性約束用戶名UserName相 關(guān),該列是Table_LoginRecord的外鍵。下面介紹在SSMS中外鍵的創(chuàng)建方法。n 在要創(chuàng)建外鍵聯(lián)系的表Table_LoginRecord的表設(shè)計器窗口中, 在任意行上右擊,在彈出的快捷菜單中選擇“關(guān)系”命令,彈出如圖4-11所示的“外鍵

17、關(guān)系”對話框。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-11 “外鍵關(guān)系”對話框戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 在“外鍵關(guān)系”對話框中單擊“添加”按鈕增加新的外鍵關(guān)系。如果要修改已經(jīng)建立的約束,可以從“選定的關(guān)系”列表中選擇對應(yīng)的關(guān)系名。如果是刪除約束,則單擊“刪除”按紐。n 單擊“表和列規(guī)范”右邊的 按鈕,打開“表和列”對話框,輸入關(guān)系名,選擇主鍵表、主鍵、外鍵表與外鍵。如圖4-12中,在主鍵表中選擇Users,選擇主鍵為UserName;在外鍵表中選擇Table_LoginRecord,選擇外鍵為UserName。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世

18、界 育未來創(chuàng)新物聯(lián)教育圖4-12 “表和列”對話框戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 單擊【確定】按鈕返回“外鍵關(guān)系”對話框。在圖4- 10中可以選擇“在創(chuàng)建或重新啟動時檢查現(xiàn)有數(shù)據(jù)”。n 這里需要注意的是在創(chuàng)建外鍵約束時,一定要保證父表中被引用的列必須唯一(即必須為主鍵或唯一性約束的字段),否則不能創(chuàng)建外鍵;父表中的被引用列與子表中的外鍵列數(shù)據(jù)類型和長度必須相同,否則不能創(chuàng)建。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 3檢查約束n 檢查約束通過使用邏輯表達(dá)式來限制列上可以接受的值, 要進(jìn)入數(shù)據(jù)表的數(shù)據(jù),必須符合條件才可以通過。在數(shù)據(jù)庫表的設(shè)計界面上,在任

19、意行上右擊,在彈出的快捷菜單中選擇“Check約束”命令,打開“check約束”對話框。單擊【添加】按鈕,新建檢查約束。單擊“表達(dá)式”右邊的 按鈕,打開“check約束表達(dá)式”對話框,在該對話框中設(shè)置約束條件。依次單擊【確定】按鈕,保存設(shè)置,完成檢查約束的設(shè)置。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 4惟一性約束n 惟一性約束是用于保證某字段數(shù)據(jù)的惟一性。與主鍵約束一樣,設(shè)置了惟一性約束的字段也可被外鍵引用。但惟一性約束與主鍵約束也有區(qū)別:惟一性約束允許該列存在空值,而主鍵不允許空值;在一個表上可定義多個惟一性約束,但只能定義一個主鍵約束。在SSMS中唯一性約束的創(chuàng)建方法如下

20、:n 在數(shù)據(jù)庫表的設(shè)計界面上,在任意行上右擊,在彈出的快捷菜單中選擇“索引/鍵”命令,打開“索引/鍵”對話框,如圖4-13所示。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-13 “索引/鍵”對話框戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 選擇類型為“唯一鍵”,選擇要設(shè)置為唯一性的列為UserName。n 設(shè)置完成后,分別關(guān)閉已打開的對話框,保存設(shè)置。n 5默認(rèn)約束n 默認(rèn)約束是指在記錄建立后用戶沒有輸入字段值時,該字段值是由系 統(tǒng)自動提供。在數(shù)據(jù)庫表的設(shè)計界面上,選中要創(chuàng)建默認(rèn)約束的列, 在下面列屬性中設(shè)置“默認(rèn)值或綁定”即可。n 上述操作過程除了使用SSMS進(jìn)

21、行圖形化操作外,還可以通過編寫Create DataBase、Create Table等SQL語句實(shí)現(xiàn),這里不再贅述。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育2.3 數(shù)據(jù)查詢語句n 數(shù)據(jù)查詢語句具有極強(qiáng)的查詢與統(tǒng)計匯總功能,語句一般格式如下。SelectAll | Distinct ,nFrom ,n WhereGroupBy Having OrderByAsc | Desc 其中Select,n 為投影運(yùn)算,“目標(biāo)表達(dá)式”指定了結(jié)果集中要包含的數(shù)據(jù)列,子句的目標(biāo)表達(dá)式有4種表達(dá)方式,如圖4-13(a)所示;戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育From指定了查詢

22、的數(shù)據(jù)源。當(dāng)數(shù)據(jù)源為單個表時該查詢?yōu)楹唵尾樵?,?dāng)數(shù)據(jù)源超過1個表時該查詢?yōu)檫B接查詢,連接方式有7種表達(dá)方式,如圖4-13(b)所示。Where為選擇運(yùn)算,指定了數(shù)據(jù)源中的行需要滿足的篩選條件,有6種表達(dá)方式,如圖4-14(c)所示,在Where 子句中還允許進(jìn)行嵌套子查詢與相關(guān)子查詢;GroupBy為分組語句,通常需要在分組的情 況下進(jìn)行統(tǒng)計運(yùn)算;Having為附加選擇運(yùn)算,用來向使用GroupBy子句的查詢添加數(shù)據(jù)篩選條件;OrderByAsc | Desc 為排序運(yùn)算,指定了結(jié)果集中行的排列順序。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-13 “索引/鍵”對話框戰(zhàn)略性信息

23、產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育2.4 數(shù)據(jù)更新語句n 1Insert 語句語句格式1:Insert Into 字段名表 Values (字語句格式2:Insert Into 字段名表 Select 子句段值)n 2Update語句Update Set = Where n 3Delete與Truncate語句Delete From Where Truncate Table戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育目錄1. 典型案例2. SQL Server數(shù)據(jù)庫基礎(chǔ)3.ADO.NET操作數(shù)據(jù)庫4. 數(shù)據(jù)源與數(shù)據(jù)綁定5. 實(shí)體數(shù)據(jù)模型操作數(shù)據(jù)庫6.Linq7. 小結(jié)8.

24、習(xí)題戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育3.1 ADO.NET概述1ADO.NET訪問數(shù)據(jù)源的方式ASP.NET通過ADO.NET來訪問數(shù)據(jù)庫,ADO.NET完全兼容于OLE DB兼容數(shù)據(jù)庫,因此,無論采取的是Access、SQL Server、Informix、Oracle、dBase或其他數(shù)據(jù)庫,只要該數(shù)據(jù)庫有OLE DB 驅(qū)動程序,ADO.NET就能夠訪問。由圖4-15可知,ADO.NET通過以下兩個.NET數(shù)據(jù)提供程序來訪問數(shù)據(jù)源。(1)SQL Server.NET數(shù)據(jù)提供程序:用來訪問SQL Server 7.0或更高版本的數(shù)據(jù)庫,它位于System.Data.Sq

25、lClient命名空間,由于使用特殊的協(xié)議(Tabular Data Stream)與SQL Server溝通,此協(xié)議無須以來OLE DB,且直接由CLR管理,因此,使用SQL Server.NET數(shù)據(jù)提供程序訪問SQL Server數(shù)據(jù)庫比使用OLE DB.NET數(shù)據(jù)提供程序的效率更佳。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)OLE DB.NET數(shù)據(jù)提供程序:用來訪問Access、SQL Server 6.5或更舊版本、Visual FoxPro、Informix、Oracle、dBase或其他數(shù)據(jù)庫,只要該數(shù)據(jù)庫有對應(yīng)的OLE DB驅(qū)動程序,ADO.NET 就能夠訪

26、問。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 2ADO.NET的體系結(jié)構(gòu)n ADO.NET結(jié)構(gòu)如圖4-16所示,包括兩大核心組件:.NET數(shù)據(jù)提供程序和DataSet數(shù)據(jù)集。.NET數(shù)據(jù)提供程序用于連接到數(shù)據(jù)庫、執(zhí)行命令及檢索結(jié)果,包含4個核心對象,即Connection對象、Command對象、DataReader對象和DataAdapter對象。Connection對象用于與數(shù)據(jù)源建立連接,Command對象用于對數(shù)據(jù)源執(zhí)行命令,DataReader對象用于從數(shù)據(jù)源中檢索只讀、只向前的數(shù)據(jù)流,DataAdapter對象用

27、于將數(shù)據(jù)源的數(shù)據(jù)填充至DataSet數(shù)據(jù)集并更新數(shù)據(jù)集。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-16 ADO.NET訪問數(shù)據(jù)源的方式戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 3ADO.NET的命名空間在ASP.NET文件中通過ADO.NET訪問數(shù)據(jù)需要引入的幾個命名空間如表4-1:表4-1ADO.NET命名空間戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 在System.Data中提供了許多ADO.NET構(gòu)架的基類,管理和存取不同數(shù)據(jù)源的數(shù)據(jù),DataSet對象是ADO.NET的核心。n System.Data.OleDB和 System.Dat

28、a.SqlClient是ADO.NET中負(fù)責(zé)建立數(shù)據(jù)連接的類,又稱為Managed Provider,各自含有的對象如下:n System.Data.OleDB包括OleDBConnection、OleDBCommand、OleDBDataAdapter、OleDBDataReader。n System.Data.SqlClient包括SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育3.2 ADO.NET數(shù)據(jù)訪問流程n ADO.NET訪問數(shù)據(jù)庫的方式有兩種,即有連接的訪問和無連接的

29、訪問,有連接的訪問用DataReader對象返回操作結(jié)果,速度快,但是一種獨(dú)占式的訪問,效率并不高;無連接的訪問用DataSet對象返回 結(jié)果,DataSet對象可以看做是一個內(nèi)存數(shù)據(jù)庫,訪問的結(jié)果存放到DataSet對象中后可以在DataSet內(nèi)存數(shù)據(jù)庫中操作表,效率更高。n 1有連接數(shù)據(jù)訪問流程有連接數(shù)據(jù)訪問流程為:首先通過Connection對象連接外存數(shù) 據(jù)庫,然后通過Command命令對象執(zhí)行操作命令(如數(shù)據(jù)的增刪查改)。如果需要查詢信息,通過DataReader對象將數(shù)據(jù)一一讀出,再綁定到頁面控件上進(jìn)行顯示。所有操作結(jié)束后必須關(guān)閉Connection對象 的連接,斷開與外存數(shù)據(jù)庫的

30、連接。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 2無連接數(shù)據(jù)訪問流程無連接數(shù)據(jù)訪問流程為:首先使用Connection對象建立與外存數(shù)據(jù)庫的連接,然后通過設(shè)置DataAdapter適配器對象的屬性,用指定連接執(zhí)行SQL語句從數(shù)據(jù)庫中提取需要的數(shù)據(jù),創(chuàng)建DataSet內(nèi)存數(shù)據(jù)庫對象,將DataAdapter對象執(zhí)行SQL語句返回的結(jié)果使用Fill方法填充至DataSet對象。DataSet從數(shù)據(jù)源中獲取數(shù)據(jù)以后就可以斷開與數(shù)據(jù)源之間的連接。最后為數(shù)據(jù)綁定控件設(shè)置數(shù)據(jù)源并綁定,以便在其中顯示DataSet內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)。同時當(dāng)完成了各項(xiàng)操作后,DataAdapter對象還可以通

31、過Update方法實(shí)現(xiàn)以內(nèi)存數(shù)據(jù)庫DataSet對象中的數(shù)據(jù)來更新外存數(shù)據(jù)庫。由于DataSet中的所有數(shù)據(jù)都是加載在內(nèi)存上執(zhí)行的,可以提高數(shù)據(jù)訪問速度,提高硬盤數(shù)據(jù)的安全性,極大地改善了程序運(yùn)行的速度和穩(wěn)定性。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育3.3 常用ADO.NET對象的使用n 1Connection對象操作數(shù)據(jù)庫的第一步是建立與數(shù)據(jù)庫的連接。Connection對象用來打開和關(guān)閉數(shù)據(jù)庫連接。Access及SQL Server 7.0以上版本數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫連接的語法如下:OleDbConnection con= new OleDbConnection(connect

32、ionString);/Access數(shù)據(jù)庫SqlConnection con=new SqlConnection(connectionString);/SQL Server數(shù)據(jù)庫參數(shù)connectionString用來指定數(shù)據(jù)連接方式,也可以在創(chuàng)建Connection對象之后再指定ConnectionString屬性。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (1)連接OLE DB兼容數(shù)據(jù)庫常用的參數(shù)n 例:下面的三個字符串分別用來打開Oracle、Access及SQL Server6.5或以前版本的數(shù)據(jù)庫,其中Data Source參數(shù)為數(shù)據(jù)源的實(shí)際路徑:“Provider=

33、MSDAORA;Data Source=ORACLE8i7;User ID=Jerry;Password=f658”“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=d:data.mdb”“Provider=SQLOLEDB;Data Source=WWW;Integrated Security=SSPI”戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)連接SQL Server 7.0或更新版本數(shù)據(jù)庫的常用參數(shù),見表4-2。表4-2連接SQL Server 7.0或更新版本數(shù)據(jù)庫的常用參數(shù)戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)

34、教育Data Source=localhost; Initial catalog=Alumni_sys; User Id=Sa;Pwd=Sa“n (3)Connection對象的方法Open():打開數(shù)據(jù)庫。Close():關(guān)閉數(shù)據(jù)庫連接。不再使用數(shù)據(jù)源時,使用該方法關(guān)閉與數(shù)據(jù)源的連接。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 2Command對象成功使用Connection對象創(chuàng)建數(shù)據(jù)連接之后,接下來就可使用ADO.NET對象提供的Command對象對數(shù)據(jù)源執(zhí)行各種SQL命令并返回結(jié)果。創(chuàng)建Command對象的語法如下:OleDbCommand cmd =new OleDbC

35、ommand(cmdText,connectioin);/Access數(shù)據(jù)庫SqlCommandcmd =new SqlCommand(cmdText,connection);/SQL Server數(shù)據(jù)庫參數(shù)cmdText為欲執(zhí)行的SQL命令,參數(shù)connection為欲使用的數(shù)據(jù)連接戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (1)Command對象常用屬性CommandText屬性:獲取或設(shè)置欲對數(shù)據(jù)源執(zhí)行的SQL命令、存儲過程名稱或數(shù)據(jù)表名稱。CommandType屬性:獲取或設(shè)置命令類別,可取的值為StoredProcedure(存儲過程)、TableDirect(數(shù)據(jù)表

36、名)、Text(SQL語句)。Connection屬性:獲取或設(shè)置Command對象所要 使用的數(shù)據(jù)連對象。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)Command對象常用方法ExecuteNonQuery方法:執(zhí)行CommandText屬性指定的內(nèi)容,并返回被影響的列數(shù)。只有Update、Insert及Delete返回被影響的列數(shù),該方法用于對數(shù)據(jù)庫的更新操作。ExecuteReader方法:執(zhí)行CommandText屬性指定的內(nèi)容, 并創(chuàng)建DataReader對象,一般執(zhí)行的是Select語句。ExecuteScalar方法:執(zhí)行CommandText屬性指定的內(nèi)容,

37、 并返回執(zhí)行結(jié)果第一列第一欄的值,此方法只能用來執(zhí)行Select語句。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 3DataReader對象對于只需順序顯示數(shù)據(jù)表中記錄的應(yīng)用而言, DataReader對象是比較理想的選擇。可以通過Command 對象的ExecuteReader()方法創(chuàng)建DataReader對象。DataReader對象一旦建立,即可通過對象的屬性、方法訪問數(shù)據(jù)源中的數(shù)據(jù)。建立DataReader對象的語法如下:戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育OleDbDataReader dr= cmd.ExecuteReader();/Access數(shù)

38、據(jù)庫SqlDataReader dr = cmd.ExecuteReader();/SQL Server數(shù)據(jù)庫(1)DataReader對象的屬性FieldCount:獲取字段數(shù)目。IsClosed:獲取DataReader對象的狀態(tài),True表示關(guān)閉,F(xiàn)alse表示打開。RecordsAffected:獲取執(zhí)行Insert、Delete或Update等SQL命令后有多少行受到影響,若沒有受到影響,便返回0。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)DataReader對象的方法Close():關(guān)閉DataReader對象。GetFieldType(ordinal):獲取

39、第ordinal1列的數(shù)據(jù)類型。GetName(ordinal):獲取第ordinal1列字段的名稱。GetOrdinal(name):獲取字段名稱為name的字段序號。GetValues(values):獲取所有字段的內(nèi)容,并將字段內(nèi)容存放在values數(shù)組,IsDBNull(ordinal):判斷第ordinal1列是否為Null,返回False表示不是Null,返回True表示是Null。Reader():讀取下一條數(shù)據(jù)并返回布爾值,返回True表示還有下一條數(shù)據(jù),返回False表示沒有下一條數(shù)據(jù)。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 4DataAdapter對象成功

40、地使用Connection對象創(chuàng)建數(shù)據(jù)連接后,可以使用DataAdapter對象對數(shù)據(jù)源執(zhí)行各種SQL命令并返回結(jié)果,可以執(zhí)行的命令包括:“選取”(SelectCommand)、“插入”(InsertCommand)、“更新”(UpdateCommand)、“刪除”(DeleteCommand)。(1)創(chuàng)建DataAdapter對象語法結(jié)構(gòu)(以SQL Server數(shù)據(jù)庫為例,有以下四種方法):戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n SqlDataAdapter dp= new SqlDataAdapter() ;創(chuàng)建之后配置屬性/n SqlDataAdapter dp= ne

41、w SqlDataAdapter(命令對象名)/先創(chuàng)建Command對象n SqlDataAdapter dp= new SqlDataAdapter(SQL語句,連接對象名) /先創(chuàng)建Connection對象n SqlDataAdapter dp= new SqlDataAdapter(SQL語句,連接字符串)戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)DataAdapter對象的屬性DeleteCommand = “”:獲取或設(shè)置用來從數(shù)據(jù)源刪除數(shù)據(jù)行的SQL命令,屬性值必須為Command對象,此屬性只有在調(diào)用Update()方法,DataAdapter對象得知須從數(shù)

42、據(jù)源刪除數(shù)據(jù)行時使用,其主要用途是告訴DataAdapter對象如何從數(shù)據(jù)源刪除數(shù)據(jù)行。InsertCommand = “”:獲取或設(shè)置將數(shù)據(jù)行插入數(shù)據(jù)源的SQL命令,屬性值必須是Command對象,使用原則同DeleteCommand。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育SelectCommand =“”:獲取或設(shè)置用來從數(shù)據(jù)源選取數(shù)據(jù)行的SQL命令,屬性值為Command對象,使用原則同DeleteCommand。UpdateCommand =“”:獲取或設(shè)置用來更新數(shù)據(jù)源數(shù)據(jù)行的SQL命令,屬性值為Command對象,使用原則 同DeleteCommand。其他屬性:C

43、ontinueUpdateOnError 、AcceptChangesDuringFill 、MissingMappingAction、MissingSchemaAction、TableMappings。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (3)DataAdapter的方法Fill(dataSet對象名,內(nèi)存表的別名)將SelectCommand屬性指定的SQL命令執(zhí)行結(jié)果所選取的數(shù)據(jù)行置入DataSet對象,其返回值為置DataSet對象的數(shù)據(jù)行數(shù)。Update(dataSet對象名, 內(nèi)存表的別名 )調(diào)用InsertCommand、UpdateCommand或Dele

44、teCommand屬性 指定的SQL命令將DataSet對象更新到數(shù)據(jù)源。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 5DataSet對象n DataSet對象是ADO.NET體系結(jié)構(gòu)的中心,位于.NETFramework中System.Data.DataSet中,實(shí)際上是從數(shù)據(jù)庫中檢索記錄的緩存,可以將DataSet當(dāng)作一個小型內(nèi)存數(shù)據(jù)庫,它包含表、列、約束、行和關(guān)系。這些DataSet對象稱為DataTable、DataColumn、DataRow、Constraint和Reliation。DataSet允許使用無連接的應(yīng)用程序。在用戶要求訪問數(shù)據(jù)源時,無須經(jīng)過冗長的連接操作

45、,而且數(shù)據(jù)從數(shù)據(jù)源讀入DataSet對象( 內(nèi)存)之后,便關(guān)閉數(shù)據(jù)連接,解除數(shù)據(jù)庫的鎖定,其他用戶便可以使用該數(shù)據(jù)庫,用戶之間無須爭奪數(shù)據(jù)源。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n DataSet對象必須配合DataAdapter對象使用,DataAdapter對象結(jié)構(gòu)在Command對象之上,用來執(zhí)行SQL命令,然后將結(jié)果置入DataSet對象;此外DataAdapter對象也可將DataSet對象更改過的數(shù)據(jù)寫回數(shù)據(jù)源。n 每個用戶都擁有專屬的DataSet對象,所有操作數(shù)據(jù)庫的動作(查詢、刪除、插入及更新等)都在DataSet對象中進(jìn)行,與數(shù)據(jù)源無關(guān)。使用DataSet

46、對象處理數(shù)據(jù)庫的概念很簡單,其過程如圖4-17所示。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-17 DataSet對象處理數(shù)據(jù)過程戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 創(chuàng)建DataSet對象的方式很簡單,無論那種數(shù)據(jù)源(OLEDB數(shù)據(jù)庫或SQL Server數(shù)據(jù)庫),創(chuàng)建方式都一樣,語法如下:DataSetds= new DataSet();da.Fill(ds,內(nèi)存表的別名);/da為DataAdapter對象名成功創(chuàng)建DataSet對象之后,就可以訪問其所提供的屬性及方法。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (1)DataSet對

47、象的屬性CaseSensitive = True,F(xiàn)alse:獲取或設(shè)置在DataTable對象內(nèi)比較字符串時是否分辨字母的大小寫,默認(rèn)為False。DataSetName = “”:當(dāng)前DataSet的名稱。如果不指定,則該屬性值設(shè)置為NewDataSet。如果將DataSet內(nèi)容寫入XML文件, DataSetName是XML文件的根節(jié)點(diǎn)名稱。Tables:獲取DataTable集合,DataSet對象的所有DataTable對象( 數(shù)據(jù)表)均存放在DataTableCollection中。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (2)DataSet對象的方法Accept

48、Changes():將所有變動過的數(shù)據(jù)更新到DataSet對象。Clear():清除DataSet對象的數(shù)據(jù),此方刪除所有DataTable對象。Clone():復(fù)制DataSet對象的結(jié)構(gòu),包含所有DataTable對象的架構(gòu)描述、條件約束,返回值與此DataSet對象具有相同結(jié)構(gòu)的DataSet對象。Copy():復(fù)制DataSet對象的結(jié)構(gòu)及數(shù)據(jù),返回值為與此DataSet對象具有相同結(jié)構(gòu)及數(shù)據(jù)的DataSet對象。GetChanges(Added,Deleted,Detached,Modified, Unchanged):此方法的參數(shù)可以省略不寫,表示返回自上次調(diào)用AcceptChan

49、ges()方法后,DataSet對象變動過的數(shù)據(jù)。GetXml:返回數(shù)據(jù)存放在DataSet對象內(nèi)的XML描述,返回值為字符創(chuàng)。HasChanges(Added,Deleted,Detached,Modified,Unchanged):判斷DataSet對象的數(shù)戰(zhàn)據(jù)略是性信否息產(chǎn)變業(yè)教動育服過務(wù)。提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 工程案例n 【例4-1】在WPF開發(fā)小區(qū)物業(yè)監(jiān)控系統(tǒng)中,演示數(shù)據(jù)的顯示,其運(yùn)行結(jié)果如圖4-18所示。圖4-18 數(shù)據(jù)顯示界面戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 操作步驟n (1)新建一個“Demo_4”WPF應(yīng)用程序項(xiàng)目。n (2)在“Main

50、Window.xaml”文件中添加如下代碼戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (3)在app.config文件中添加連接字符串常量。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (4)添加類文件DataBaseHelper.cs,在其中編寫連接數(shù)據(jù)庫、執(zhí)行SQL增刪改語句,執(zhí)行SQL查詢語句的函數(shù)。主要代碼如下:戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界

51、育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (5)在“MainWindow.xaml.cs”中主要功能代碼如 下。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n (6)啟動項(xiàng)目進(jìn)行測試,就可以看到如圖所示界面。n 【例4-2】在WPF開發(fā)小區(qū)物業(yè)監(jiān)控系統(tǒng)中,演示數(shù)據(jù)的查詢 ,其運(yùn)行結(jié)果如圖4-19、圖4-20 所示戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-19 登錄信息查詢界面戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育圖4-20 登錄信息查詢運(yùn)行效果戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來創(chuàng)新物聯(lián)教育n 操作步驟(1) 新建一個“Demo_4_2”WPF應(yīng)用程序項(xiàng)目。(2) 在“MainWindow.xaml”中添加如下代碼。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界

溫馨提示

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

評論

0/150

提交評論