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

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

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

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

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

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

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

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

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

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

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

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

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

15、”窗口戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育n 直接在表中刪除記錄的方法是:在圖4-10中,選定要?jiǎng)h除的記錄,右擊在彈出菜單中選擇“刪除”命令。n 注意:向表中添加、修改、刪除記錄要受到各種完整性約束的限制。n 5約束的創(chuàng)建與維護(hù)n 約束是實(shí)現(xiàn)數(shù)據(jù)完整性、一致性和有效性的重要方法,下面介紹在SSMS中使用圖形化工具來(lái)創(chuàng)建和維護(hù)約束。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育n (1)主鍵約束n 在“對(duì)象資源管理器”中,打開要設(shè)置主鍵的表,進(jìn)入“ 表設(shè)計(jì)器”窗口。選定要設(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)世界 育未來(lái)創(chuàng)新物聯(lián)教育n (2)外鍵約束n 外鍵約束主要用于維護(hù)兩個(gè)表之間的一致性,即外鍵的值必須引用另一表主鍵的值。例如用戶登陸信息表中Table_LoginRecord的用戶名UserName應(yīng)與用戶表Users中的唯一性約束用戶名UserName相 關(guān),該列是Table_LoginRecord的外鍵。下面介紹在SSMS中外鍵的創(chuàng)建方法。n 在要?jiǎng)?chuàng)建外鍵聯(lián)系的表Table_LoginRecord的表設(shè)計(jì)器窗口中, 在任意行上右擊,在彈出的快捷菜單中選擇“關(guān)系”命令,彈出如圖4-11所示的“外鍵

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

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

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

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

21、行圖形化操作外,還可以通過(guò)編寫Create DataBase、Create Table等SQL語(yǔ)句實(shí)現(xiàn),這里不再贅述。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育2.3 數(shù)據(jù)查詢語(yǔ)句n 數(shù)據(jù)查詢語(yǔ)句具有極強(qiáng)的查詢與統(tǒng)計(jì)匯總功能,語(yǔ)句一般格式如下。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)世界 育未來(lái)創(chuàng)新物聯(lián)教育From指定了查詢

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

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

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

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

26、問(wèn)。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(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ù)庫(kù)、執(zhí)行命令及檢索結(jié)果,包含4個(gè)核心對(duì)象,即Connection對(duì)象、Command對(duì)象、DataReader對(duì)象和DataAdapter對(duì)象。Connection對(duì)象用于與數(shù)據(jù)源建立連接,Command對(duì)象用于對(duì)數(shù)據(jù)源執(zhí)行命令,DataReader對(duì)象用于從數(shù)據(jù)源中檢索只讀、只向前的數(shù)據(jù)流,DataAdapter對(duì)象用

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

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

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

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

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

32、ionString);/Access數(shù)據(jù)庫(kù)SqlConnection con=new SqlConnection(connectionString);/SQL Server數(shù)據(jù)庫(kù)參數(shù)connectionString用來(lái)指定數(shù)據(jù)連接方式,也可以在創(chuàng)建Connection對(duì)象之后再指定ConnectionString屬性。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育n (1)連接OLE DB兼容數(shù)據(jù)庫(kù)常用的參數(shù)n 例:下面的三個(gè)字符串分別用來(lái)打開Oracle、Access及SQL Server6.5或以前版本的數(shù)據(jù)庫(kù),其中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)世界 育未來(lái)創(chuàng)新物聯(lián)教育n (2)連接SQL Server 7.0或更新版本數(shù)據(jù)庫(kù)的常用參數(shù),見表4-2。表4-2連接SQL Server 7.0或更新版本數(shù)據(jù)庫(kù)的常用參數(shù)戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

49、ges()方法后,DataSet對(duì)象變動(dòng)過(guò)的數(shù)據(jù)。GetXml:返回?cái)?shù)據(jù)存放在DataSet對(duì)象內(nèi)的XML描述,返回值為字符創(chuàng)。HasChanges(Added,Deleted,Detached,Modified,Unchanged):判斷DataSet對(duì)象的數(shù)戰(zhàn)據(jù)略是性信否息產(chǎn)變業(yè)教動(dòng)育服過(guò)務(wù)。提供商聯(lián)世界 育未來(lái)創(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)世界 育未來(lái)創(chuàng)新物聯(lián)教育n 操作步驟n (1)新建一個(gè)“Demo_4”WPF應(yīng)用程序項(xiàng)目。n (2)在“Main

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

51、育未來(lái)創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育n (5)在“MainWindow.xaml.cs”中主要功能代碼如 下。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育n (6)啟動(dòng)項(xiàng)目進(jìn)行測(cè)試,就可以看到如圖所示界面。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)世界 育未來(lái)創(chuàng)新物聯(lián)教育圖4-19 登錄信息查詢界面戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育圖4-20 登錄信息查詢運(yùn)行效果戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界 育未來(lái)創(chuàng)新物聯(lián)教育n 操作步驟(1) 新建一個(gè)“Demo_4_2”WPF應(yīng)用程序項(xiàng)目。(2) 在“MainWindow.xaml”中添加如下代碼。戰(zhàn)略性信息產(chǎn)業(yè)教育服務(wù)提供商聯(lián)世界

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論