




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第五章第五章 ASP.NET數(shù)據(jù)庫編程數(shù)據(jù)庫編程5.1 網(wǎng)絡(luò)數(shù)據(jù)庫編程基礎(chǔ)網(wǎng)絡(luò)數(shù)據(jù)庫編程基礎(chǔ) 在.NET框架中,包含了其自己的數(shù)據(jù)訪問技術(shù)ADO.NET。ADO.NET包含托管的類使得WEB應(yīng)用程序可以連接數(shù)據(jù)源、執(zhí)行指令以及管理非連接的數(shù)據(jù)。使得ASP.NET中的ADO.NET幾乎不用編寫代碼就可以對網(wǎng)絡(luò)數(shù)據(jù)庫進(jìn)行基本的操作,這使得ASP.NET中的數(shù)據(jù)處理變得非常簡單。 5.1 網(wǎng)絡(luò)數(shù)據(jù)庫編程基礎(chǔ)網(wǎng)絡(luò)數(shù)據(jù)庫編程基礎(chǔ) ASP.NET ASP.NET中包含兩類數(shù)據(jù)控件中包含兩類數(shù)據(jù)控件:第:第一類是數(shù)據(jù)源(一類是數(shù)據(jù)源(Data SourceData Source)控件,)控件,它可以使它可以
2、使WEBWEB頁面與數(shù)據(jù)源連接,并且頁面與數(shù)據(jù)源連接,并且對該數(shù)據(jù)源進(jìn)行讀寫。但是,在運行對該數(shù)據(jù)源進(jìn)行讀寫。但是,在運行時數(shù)據(jù)源控件是不可見的,它無法將時數(shù)據(jù)源控件是不可見的,它無法將數(shù)據(jù)顯示在數(shù)據(jù)顯示在ASP.NETASP.NET的頁面上。第二類的頁面上。第二類是數(shù)據(jù)綁定(是數(shù)據(jù)綁定(Data-boundData-bound)控件,這)控件,這些控件用來將數(shù)據(jù)源所連接的數(shù)據(jù)顯些控件用來將數(shù)據(jù)源所連接的數(shù)據(jù)顯示在頁面上。示在頁面上。5.2 數(shù)據(jù)源控件數(shù)據(jù)源控件 ASP.NET ASP.NET引入了聲明性數(shù)據(jù)源控件,這引入了聲明性數(shù)據(jù)源控件,這些控件向頁面上的數(shù)據(jù)綁定控件公開來自些控件向頁面上
3、的數(shù)據(jù)綁定控件公開來自后端存儲(例如后端存儲(例如SQLSQL數(shù)據(jù)庫)的數(shù)據(jù)。數(shù)據(jù)數(shù)據(jù)庫)的數(shù)據(jù)。數(shù)據(jù)源控件還公開諸如排序、分頁、緩存、更源控件還公開諸如排序、分頁、緩存、更新、插入和刪除數(shù)據(jù)等功能,這樣新、插入和刪除數(shù)據(jù)等功能,這樣UIUI控件控件能夠自動利用這些功能而無需代碼。簡而能夠自動利用這些功能而無需代碼。簡而言之,一個數(shù)據(jù)源控件就是一組言之,一個數(shù)據(jù)源控件就是一組.NET.NET框架框架類,它有利于數(shù)據(jù)存儲和數(shù)據(jù)綁定控件之類,它有利于數(shù)據(jù)存儲和數(shù)據(jù)綁定控件之間的雙向綁定。間的雙向綁定。 ASP.NETASP.NET中內(nèi)置的數(shù)據(jù)源控件中內(nèi)置的數(shù)據(jù)源控件 數(shù)據(jù)源控件說明ObjectDa
4、taSource支持綁定到中間層對象來管理數(shù)據(jù)的Web應(yīng)用程序。SqlDataSource支持綁定到ADO.NET提供程序所表示的SQL數(shù)據(jù)庫。AccessDataSource支持綁定到Microsoft Access數(shù)據(jù)庫。XmlDataSource允許使用XML文件。它還可以更新整個XML文檔的數(shù)據(jù)。SiteMapDataSource 支持綁定到ASP.NET 2.0站點導(dǎo)航提供程序公開的層次結(jié)構(gòu)。5.2 數(shù)據(jù)源控件數(shù)據(jù)源控件5.2.1 5.2.1 綁定到數(shù)據(jù)庫綁定到數(shù)據(jù)庫 在連接到數(shù)據(jù)庫時,需要制定數(shù)據(jù)源在連接到數(shù)據(jù)庫時,需要制定數(shù)據(jù)源控件的幾個屬性。最明顯就是控件的控件的幾個屬性。最明
5、顯就是控件的IDID以以及及“runatrunat=server”=server”。另外,還要指明位。另外,還要指明位于哪個服務(wù)器上的哪個數(shù)據(jù)庫以及要登錄于哪個服務(wù)器上的哪個數(shù)據(jù)庫以及要登錄該服務(wù)器的用戶名和密碼。這些屬性都包該服務(wù)器的用戶名和密碼。這些屬性都包含在連接字符串中。含在連接字符串中。5.2 數(shù)據(jù)源控件數(shù)據(jù)源控件 連接到數(shù)據(jù)庫之后,還需要指定從連接到數(shù)據(jù)庫之后,還需要指定從數(shù)據(jù)源讀取的記錄和字段。當(dāng)然,還數(shù)據(jù)源讀取的記錄和字段。當(dāng)然,還需要指定數(shù)據(jù)源的數(shù)據(jù)提供程序,以需要指定數(shù)據(jù)源的數(shù)據(jù)提供程序,以描述數(shù)據(jù)源控件與數(shù)據(jù)庫的交互方式描述數(shù)據(jù)源控件與數(shù)據(jù)庫的交互方式。5.2 數(shù)據(jù)源控件
6、數(shù)據(jù)源控件例例1 1:使用:使用SqlDataSourceSqlDataSource數(shù)據(jù)源控件連數(shù)據(jù)源控件連接接SQL ServerSQL Server數(shù)據(jù)庫,并顯示其中的數(shù)據(jù)庫,并顯示其中的數(shù)據(jù)數(shù)據(jù)例例2 2:在頁面中添加一個:在頁面中添加一個GridViewGridView控件,控件,將該控件與將該控件與pubspubs數(shù)據(jù)庫中的數(shù)據(jù)庫中的authorsauthors表表綁定綁定5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 數(shù)據(jù)綁定控件吧數(shù)據(jù)源提供的數(shù)據(jù)作為數(shù)據(jù)綁定控件吧數(shù)據(jù)源提供的數(shù)據(jù)作為標(biāo)記,發(fā)送給請求的客戶端瀏覽器,然后標(biāo)記,發(fā)送給請求的客戶端瀏覽器,然后將數(shù)據(jù)呈現(xiàn)在瀏覽器頁面上。數(shù)據(jù)綁定控將數(shù)
7、據(jù)呈現(xiàn)在瀏覽器頁面上。數(shù)據(jù)綁定控件能夠自動綁定到數(shù)據(jù)源公開的數(shù)據(jù),并件能夠自動綁定到數(shù)據(jù)源公開的數(shù)據(jù),并在頁請求生命周期中的適當(dāng)時間獲取數(shù)據(jù)在頁請求生命周期中的適當(dāng)時間獲取數(shù)據(jù)。這些控件還可以選擇利用數(shù)據(jù)源功能,。這些控件還可以選擇利用數(shù)據(jù)源功能,例如排序、分頁、篩選、更新、刪除和插例如排序、分頁、篩選、更新、刪除和插入。入。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 在第三章介紹的在第三章介紹的ASP.NET服務(wù)器控件大多服務(wù)器控件大多可以作為數(shù)據(jù)綁定控件來使用,例如將可以作為數(shù)據(jù)綁定控件來使用,例如將Lable和和TextBox控件綁定到數(shù)據(jù)庫表中的一控件綁定到數(shù)據(jù)庫表中的一個字符串字段。這種綁定可
8、以通過修改該個字符串字段。這種綁定可以通過修改該控件的控件的DataSourceID屬性使之連接到數(shù)據(jù)源屬性使之連接到數(shù)據(jù)源控件上。控件上。新增的數(shù)據(jù)綁定控件新增的數(shù)據(jù)綁定控件名稱名稱說明說明GridViewGridView以網(wǎng)格格式呈現(xiàn)數(shù)據(jù)。此控件是以網(wǎng)格格式呈現(xiàn)數(shù)據(jù)。此控件是DataGridDataGrid控件的控件的演變形式,并且能夠自動利用數(shù)據(jù)源功能。演變形式,并且能夠自動利用數(shù)據(jù)源功能。DetailsViewDetailsView在標(biāo)簽在標(biāo)簽/ /值對的表格中呈現(xiàn)單個數(shù)據(jù)項,類似于值對的表格中呈現(xiàn)單個數(shù)據(jù)項,類似于AccessAccess中的窗體視圖。此控件也能自動利用數(shù)據(jù)中的窗體視
9、圖。此控件也能自動利用數(shù)據(jù)源功能。源功能。FormViewFormView在由自定義模板定義的窗體中一次呈現(xiàn)單個數(shù)據(jù)項在由自定義模板定義的窗體中一次呈現(xiàn)單個數(shù)據(jù)項。在標(biāo)簽。在標(biāo)簽/ /值對的表格中呈現(xiàn)單個數(shù)據(jù)項,類似于值對的表格中呈現(xiàn)單個數(shù)據(jù)項,類似于AccessAccess中的窗體視圖。此控件也能自動利用數(shù)據(jù)中的窗體視圖。此控件也能自動利用數(shù)據(jù)源功能。源功能。TreeViewTreeView在可展開節(jié)點的分層樹視圖中呈現(xiàn)數(shù)據(jù)。在可展開節(jié)點的分層樹視圖中呈現(xiàn)數(shù)據(jù)。MenuMenu以分層動態(tài)菜單(包括彈出式菜單)來呈現(xiàn)數(shù)據(jù)。以分層動態(tài)菜單(包括彈出式菜單)來呈現(xiàn)數(shù)據(jù)。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定
10、控件5.3.1 GridView控件控件 GridView控件,完全支持?jǐn)?shù)據(jù)源組件,控件,完全支持?jǐn)?shù)據(jù)源組件,能夠自動處理諸如分頁、排序和編輯等數(shù)能夠自動處理諸如分頁、排序和編輯等數(shù)據(jù)操作,前提是綁定的數(shù)據(jù)源對象支持這據(jù)操作,前提是綁定的數(shù)據(jù)源對象支持這些操作。另外,它支持多個主鍵字段,公些操作。另外,它支持多個主鍵字段,公開了一些用戶界面的改進(jìn)功能和一個處理開了一些用戶界面的改進(jìn)功能和一個處理與取消事件的新模型與取消事件的新模型5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 GridView控件附帶了一對互補(bǔ)的視圖控控件附帶了一對互補(bǔ)的視圖控件,件,DetailsView和和FormView,通過這些控,
11、通過這些控件的組合,能夠輕松地建立主件的組合,能夠輕松地建立主/詳細(xì)視圖,詳細(xì)視圖,而只需少量代碼。而只需少量代碼。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 GridViewGridView控件支持以下功能:控件支持以下功能:n綁定到數(shù)據(jù)源控件。綁定到數(shù)據(jù)源控件。n內(nèi)置的排序功能。內(nèi)置的排序功能。n內(nèi)置的更新和刪除功能。內(nèi)置的更新和刪除功能。n內(nèi)置的分頁功能。內(nèi)置的分頁功能。n內(nèi)置的行選擇功能。內(nèi)置的行選擇功能。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件n對對GridViewGridView對象模型進(jìn)行編程訪問以動對象模型進(jìn)行編程訪問以動態(tài)設(shè)置屬性和處理事件。態(tài)設(shè)置屬性和處理事件。n諸如諸如CheckBoxFi
12、eldCheckBoxField和和ImageFieldImageField等新的等新的列類型。列類型。n用于超鏈接列的多個數(shù)據(jù)字段。用于超鏈接列的多個數(shù)據(jù)字段。n用于選擇、更新和刪除的多個數(shù)據(jù)鍵字用于選擇、更新和刪除的多個數(shù)據(jù)鍵字段。段。n可通過主題和樣式自定義的外觀??赏ㄟ^主題和樣式自定義的外觀。 5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 例如:例如:GridView控件的數(shù)據(jù)顯示、分頁和排控件的數(shù)據(jù)顯示、分頁和排序序5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5.3.2 Details View控件控件 許多應(yīng)用程序需要一次作用于一條記錄許多應(yīng)用程序需要一次作用于一條記錄。一種方法是創(chuàng)建單條記錄的視圖,但是
13、。一種方法是創(chuàng)建單條記錄的視圖,但是這需要自己編寫代碼。首先,需要獲取記這需要自己編寫代碼。首先,需要獲取記錄,然后,將字段綁定到數(shù)據(jù)綁定表單,錄,然后,將字段綁定到數(shù)據(jù)綁定表單,選擇性地提供分頁按鈕來瀏覽記錄。選擇性地提供分頁按鈕來瀏覽記錄。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 當(dāng)生成主當(dāng)生成主/詳細(xì)視圖時,經(jīng)常需要顯示單詳細(xì)視圖時,經(jīng)常需要顯示單條記錄的內(nèi)容。通常,用戶從網(wǎng)格中選擇條記錄的內(nèi)容。通常,用戶從網(wǎng)格中選擇一條主記錄,讓應(yīng)用程序追溯所有可用字一條主記錄,讓應(yīng)用程序追溯所有可用字段。通過組合段。通過組合GridView和和DatilsView控件,控件,編寫少量代碼,就能夠生成有層次結(jié)
14、構(gòu)的編寫少量代碼,就能夠生成有層次結(jié)構(gòu)的視圖。視圖。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 DetailsView控件在表格中顯示數(shù)據(jù)源的單控件在表格中顯示數(shù)據(jù)源的單個記錄,此表格中每個數(shù)據(jù)行表示記錄中個記錄,此表格中每個數(shù)據(jù)行表示記錄中的一個字段。此控件經(jīng)常在主控的一個字段。此控件經(jīng)常在主控/詳細(xì)方案詳細(xì)方案中與中與GridView控件一起使用??丶黄鹗褂谩?.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 DatilsView控件能夠自動綁定到任何數(shù)據(jù)控件能夠自動綁定到任何數(shù)據(jù)源控件,使用其數(shù)據(jù)操作集??丶軌蜃栽纯丶?,使用其數(shù)據(jù)操作集??丶軌蜃詣臃猪?、更新、插入和刪除底層數(shù)據(jù)的數(shù)動分頁、更新、插入和刪除底層
15、數(shù)據(jù)的數(shù)據(jù)項,只要數(shù)據(jù)源支持這些操作。多數(shù)情據(jù)項,只要數(shù)據(jù)源支持這些操作。多數(shù)情況下,建立這些操作無需編寫代碼。況下,建立這些操作無需編寫代碼。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件例如:主例如:主/詳細(xì)視圖的創(chuàng)建:詳細(xì)視圖的創(chuàng)建: 主視圖:在頁面中插入一主視圖:在頁面中插入一GridView控件控件,并配置其數(shù)據(jù)源。,并配置其數(shù)據(jù)源。 詳細(xì)視圖:在頁面中插入一詳細(xì)視圖:在頁面中插入一DetilsView控控件,并配置其數(shù)據(jù)源,其數(shù)據(jù)源可用件,并配置其數(shù)據(jù)源,其數(shù)據(jù)源可用GridView控件的數(shù)據(jù)源同時其主鍵與控件的數(shù)據(jù)源同時其主鍵與GridView控件關(guān)聯(lián)??丶P(guān)聯(lián)。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控
16、件5.3.3 FormView控件控件 該控件在任意形式的模板中一次呈現(xiàn)單該控件在任意形式的模板中一次呈現(xiàn)單個數(shù)據(jù)項。個數(shù)據(jù)項。DatilsView和和FormView之間的主之間的主要差異在于要差異在于DatilsView具有內(nèi)置的表格呈現(xiàn)具有內(nèi)置的表格呈現(xiàn)方式,而方式,而FormView需要用戶定義的模板用需要用戶定義的模板用于呈現(xiàn)。于呈現(xiàn)。 FormView和和DatilsView對象模型在對象模型在其他方面非常類似。其他方面非常類似。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 FormView是新的數(shù)據(jù)綁定控件,使用起是新的數(shù)據(jù)綁定控件,使用起來像是來像是DatilsView的模板化版本。它每次
17、從的模板化版本。它每次從相關(guān)數(shù)據(jù)中選擇一條記錄顯示,選擇性地相關(guān)數(shù)據(jù)中選擇一條記錄顯示,選擇性地提供分頁按鈕,用于在記錄之間移動。與提供分頁按鈕,用于在記錄之間移動。與DatilsView控件不同的是,控件不同的是,F(xiàn)ormView不使用不使用數(shù)據(jù)控件字段,而是允許用戶通過模板定數(shù)據(jù)控件字段,而是允許用戶通過模板定義每個項目的顯示。義每個項目的顯示。 FormView支持其數(shù)據(jù)支持其數(shù)據(jù)源提供的任何基本操作。源提供的任何基本操作。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 FormView控件是作為通常使用的更新和控件是作為通常使用的更新和插入接口而設(shè)計的,它不能驗證數(shù)據(jù)源架插入接口而設(shè)計的,它不能驗證
18、數(shù)據(jù)源架構(gòu),不支持高級編輯功能,比如外鍵字段構(gòu),不支持高級編輯功能,比如外鍵字段下拉。然而,使用模板來提供此功能很容下拉。然而,使用模板來提供此功能很容易。易。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件FormView和和DatilsView有兩方面的差異:有兩方面的差異:lFormView控件具有控件具有ItemTemplate、EditItemTemplate和和InsertItemTemplate等屬等屬性,而性,而DatilsView一個也沒有。一個也沒有。lFormView缺少命令行缺少命令行5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 與與GridView和和DatilsView控件不同的是,控件不同的
19、是, FormView沒有其自己默認(rèn)的顯示布局。同沒有其自己默認(rèn)的顯示布局。同時,它的圖形化布局完全是通過模板自定時,它的圖形化布局完全是通過模板自定義的。因此,每個模板都包括特定記錄需義的。因此,每個模板都包括特定記錄需要的所有命令按鈕。大多數(shù)模板是可選的要的所有命令按鈕。大多數(shù)模板是可選的;但是,必須為該控件的配置模式創(chuàng)建模;但是,必須為該控件的配置模式創(chuàng)建模板。例如,要插入記錄的話,必須定義板。例如,要插入記錄的話,必須定義InsertItemTemplate。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件例如:使用例如:使用FormView控件呈現(xiàn)數(shù)據(jù):控件呈現(xiàn)數(shù)據(jù):(1)、在頁面中添加、在頁面中添
20、加GridView控件,并配置其控件,并配置其數(shù)據(jù)源數(shù)據(jù)源(2)、在頁面中添加、在頁面中添加FormView控件,配置其數(shù)控件,配置其數(shù)據(jù)源并編輯模板據(jù)源并編輯模板5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5.3.4 Repeater和和DataList控件控件 這兩個控件和其他數(shù)據(jù)控件不同的是,這兩個控件和其他數(shù)據(jù)控件不同的是,這兩個控件都是以自定義的格式顯示數(shù)據(jù)這兩個控件都是以自定義的格式顯示數(shù)據(jù)庫記錄的信息庫記錄的信息5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 Repeater控件是一個數(shù)據(jù)綁定容器控件,它生控件是一個數(shù)據(jù)綁定容器控件,它生成一系列單個項。在呈現(xiàn)數(shù)據(jù)之前,使用模板定成一系列單個項。在呈現(xiàn)數(shù)據(jù)
21、之前,使用模板定義網(wǎng)頁上單個項的布局。頁運行時,義網(wǎng)頁上單個項的布局。頁運行時, 該控件為數(shù)該控件為數(shù)據(jù)源中的每個項重復(fù)相應(yīng)布局。據(jù)源中的每個項重復(fù)相應(yīng)布局。 使用使用Repeater控件創(chuàng)建基本的模板數(shù)據(jù)綁定列控件創(chuàng)建基本的模板數(shù)據(jù)綁定列表。表。 Repeater控件沒有內(nèi)置的布局或樣式;必須控件沒有內(nèi)置的布局或樣式;必須在此控件的模板內(nèi)顯示聲明所有的在此控件的模板內(nèi)顯示聲明所有的HTML布局、格布局、格式設(shè)置和樣式標(biāo)記。式設(shè)置和樣式標(biāo)記。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 Repeater控件不同于其他數(shù)據(jù)列表控件控件不同于其他數(shù)據(jù)列表控件之處在于它允許用戶在其模板中放置之處在于它允許用戶在
22、其模板中放置HTML代碼和標(biāo)記。這樣就可以創(chuàng)建復(fù)雜的代碼和標(biāo)記。這樣就可以創(chuàng)建復(fù)雜的HTML結(jié)構(gòu)。例如,若要在結(jié)構(gòu)。例如,若要在HTML表中創(chuàng)建一個列表中創(chuàng)建一個列表,需要通過在表,需要通過在HeaderTemplate中放置中放置標(biāo)記來開始此表。然后,通過在標(biāo)記來開始此表。然后,通過在ItemTemplate中放置中放置標(biāo)記、標(biāo)記、標(biāo)記和標(biāo)記和數(shù)據(jù)綁定項來創(chuàng)建該表的行和列。數(shù)據(jù)綁定項來創(chuàng)建該表的行和列。5.3 數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 如果要使表中的交替項呈現(xiàn)不同的外觀如果要使表中的交替項呈現(xiàn)不同的外觀,使用與,使用與ItemTemplate相同的內(nèi)容創(chuàng)建相同的內(nèi)容創(chuàng)建Alternating
23、ItemTemplate。最后,通過在。最后,通過在FooterTemplate中放置中放置標(biāo)記完成該標(biāo)記完成該表。表。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問5.4.1 數(shù)據(jù)訪問體系結(jié)構(gòu)數(shù)據(jù)訪問體系結(jié)構(gòu) 對于對于.NET框架中的框架中的WEB應(yīng)用程序,數(shù)據(jù)訪應(yīng)用程序,數(shù)據(jù)訪問依賴于兩個獨立的體系結(jié)構(gòu)層:問依賴于兩個獨立的體系結(jié)構(gòu)層: 第一層由執(zhí)行數(shù)據(jù)訪問所需的框架組件第一層由執(zhí)行數(shù)據(jù)訪問所需的框架組件組成;組成; 第二層是為程序員提供數(shù)據(jù)訪問功能的第二層是為程序員提供數(shù)據(jù)訪問功能的API和控件。和控件。 從實踐的觀點看,只需了解能否為特定從實踐的觀點看,只需了解能否為特定數(shù)據(jù)源找到匹配的數(shù)
24、據(jù)提供程序。數(shù)據(jù)源找到匹配的數(shù)據(jù)提供程序。 5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 數(shù)據(jù)訪問涉及數(shù)據(jù)訪問涉及4個主要的組件,個主要的組件,WEB應(yīng)用應(yīng)用程序(程序(ASP.NET)、數(shù)據(jù)層()、數(shù)據(jù)層(ADO.NET )、)、數(shù)據(jù)提供程序以及真正的數(shù)據(jù)源。數(shù)據(jù)提供程序以及真正的數(shù)據(jù)源。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問5.4.2 數(shù)據(jù)存儲數(shù)據(jù)存儲 數(shù)據(jù)存儲始于堆棧的底部,提供了整個數(shù)據(jù)存儲始于堆棧的底部,提供了整個數(shù)據(jù)訪問體系結(jié)構(gòu)的基礎(chǔ)。通過數(shù)據(jù)訪問體系結(jié)構(gòu)的基礎(chǔ)。通過ADO.NET 2.0和和ASP.NET 2.0的新增控件,的新增控件,WEB應(yīng)用程應(yīng)用程序能夠訪問多個數(shù)據(jù)存儲中
25、的數(shù)據(jù),包括序能夠訪問多個數(shù)據(jù)存儲中的數(shù)據(jù),包括關(guān)系數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫、WEB服務(wù)、服務(wù)、XML文件等。文件等。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問5.4.3 數(shù)據(jù)提供程序數(shù)據(jù)提供程序 在在ASP.NET 中,除了基本的數(shù)據(jù)訪問之外中,除了基本的數(shù)據(jù)訪問之外,提供程序模型實際上還用于多種不同的,提供程序模型實際上還用于多種不同的任務(wù)。例如,使用新增的個性化功能存儲任務(wù)。例如,使用新增的個性化功能存儲用戶數(shù)據(jù)時依賴于幾類提供程序。因此,用戶數(shù)據(jù)時依賴于幾類提供程序。因此,實際的提供程序結(jié)構(gòu)是功能依賴的。實際的提供程序結(jié)構(gòu)是功能依賴的。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問ADO.NET
26、數(shù)據(jù)提供程序的核心對象數(shù)據(jù)提供程序的核心對象 對象描述Connection建立到指定資源的鏈接Command對一個數(shù)據(jù)源執(zhí)行命令。公開Parameters,在Connection的事物范圍內(nèi)執(zhí)行。DataReader從一個數(shù)據(jù)源讀取只進(jìn)的只讀數(shù)據(jù)流DataAdapter填充一個DataSet,解析數(shù)據(jù)源的更新5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 提供程序模型明確了各種使用用途。這提供程序模型明確了各種使用用途。這樣,樣,ASP.NET開發(fā)人員能夠集中精力構(gòu)建開發(fā)人員能夠集中精力構(gòu)建WEB應(yīng)用程序的用戶界面,而后端開發(fā)人應(yīng)用程序的用戶界面,而后端開發(fā)人員則能夠通過現(xiàn)有的企業(yè)級數(shù)據(jù)存儲實現(xiàn)員
27、則能夠通過現(xiàn)有的企業(yè)級數(shù)據(jù)存儲實現(xiàn)復(fù)雜的集成。復(fù)雜的集成。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問1、Connection和和Command ADO.NET包含的包含的.NET框架數(shù)據(jù)提供程序用框架數(shù)據(jù)提供程序用于連接一個數(shù)據(jù)庫,執(zhí)行命令和檢索結(jié)果于連接一個數(shù)據(jù)庫,執(zhí)行命令和檢索結(jié)果。在。在ADO.NET中,使用中,使用Connection對象連接對象連接指定的數(shù)據(jù)源。指定的數(shù)據(jù)源。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 使用使用SQLConnection對象連接一個數(shù)據(jù)庫對象連接一個數(shù)據(jù)庫,其代碼如下:,其代碼如下:SqlConnectionSqlConnection nwindCon
28、nnwindConn = = new new SqlConnectionSqlConnection ( Data Source = ( Data Source = localhostlocalhost; Integrated Security = ; Integrated Security = true; Initial Catalog=true; Initial Catalog=northwindnorthwind ););nwindConn.OpennwindConn.Open();();5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 連接到數(shù)據(jù)源后,使用連接到數(shù)據(jù)源后,使用CommandCo
29、mmand對象執(zhí)行對象執(zhí)行命令和返回結(jié)果。命令和返回結(jié)果。CommandCommand對象通過對象通過CommandCommand的構(gòu)造函數(shù)創(chuàng)建,該構(gòu)造函數(shù)接收的構(gòu)造函數(shù)創(chuàng)建,該構(gòu)造函數(shù)接收一個一個SQLSQL語句或語句或SQLSQL查詢。一旦創(chuàng)建了查詢。一旦創(chuàng)建了CommandCommand,就能使用,就能使用CommandTextCommandText屬性修改屬性修改SQLSQL語句。語句。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問代碼如下:代碼如下: SqlCommandSqlCommand catCMDcatCMD = = new new SqlCommand(SELECTSqlCom
30、mand(SELECT CategoryIDCategoryID, , CategoryNameCategoryName FROM Categories, FROM Categories, nwindConnnwindConn););5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 實際上,一條命令等同于一個特定的實際上,一條命令等同于一個特定的SQL調(diào)用,該調(diào)用綁定到特定的數(shù)據(jù)庫。一調(diào)用,該調(diào)用綁定到特定的數(shù)據(jù)庫。一條命令只能用于條命令只能用于CommandText字段中定義字段中定義的特定調(diào)用。的特定調(diào)用。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 CommandCommand對象提供了一些不同
31、的對象提供了一些不同的ExecuteExecute方法方法來啟動存儲過程,執(zhí)行查詢或者執(zhí)行非查詢語句來啟動存儲過程,執(zhí)行查詢或者執(zhí)行非查詢語句。其。其ExecuteExecute方法有如下幾種:方法有如下幾種:nExecuteReaderExecuteReader方法方法:將數(shù)據(jù)作為一個:將數(shù)據(jù)作為一個DataReaderDataReader對象返回。用于任何返回數(shù)據(jù)的對象返回。用于任何返回數(shù)據(jù)的SQLSQL查詢。查詢。nExecuteScalarExecuteScalar方法方法:返回單獨值,例如與特:返回單獨值,例如與特定查詢相匹配的記錄數(shù),或者數(shù)據(jù)庫功能調(diào)用定查詢相匹配的記錄數(shù),或者數(shù)據(jù)
32、庫功能調(diào)用的結(jié)果。的結(jié)果。nExecuteNonQueryExecuteNonQuery方法方法:執(zhí)行不返回任何行的:執(zhí)行不返回任何行的命令。典型的例子是存儲過程、插入和更新。命令。典型的例子是存儲過程、插入和更新。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 ExecuteReaderExecuteReader方法將任何結(jié)果都返回方法將任何結(jié)果都返回到到DataReaderDataReader對象。對象。 DataReaderDataReader對象是查對象是查詢數(shù)據(jù)庫返回的一個關(guān)聯(lián)的、只進(jìn)的只讀詢數(shù)據(jù)庫返回的一個關(guān)聯(lián)的、只進(jìn)的只讀數(shù)據(jù)流。執(zhí)行查詢時,第一行返回到數(shù)據(jù)流。執(zhí)行查詢時,第一行返回
33、到DataReaderDataReader中。數(shù)據(jù)流保持到數(shù)據(jù)庫的連中。數(shù)據(jù)流保持到數(shù)據(jù)庫的連接,然后返回下一條記錄。接,然后返回下一條記錄。 DataReaderDataReader從從數(shù)據(jù)庫中讀取行數(shù)據(jù)時,每行的列值都被數(shù)據(jù)庫中讀取行數(shù)據(jù)時,每行的列值都被讀取和計算,但是不能被編輯。讀取和計算,但是不能被編輯。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 例如:制作一網(wǎng)頁,要求實現(xiàn)登陸功能例如:制作一網(wǎng)頁,要求實現(xiàn)登陸功能 當(dāng)用戶輸入用戶名和密碼后到數(shù)據(jù)庫當(dāng)用戶輸入用戶名和密碼后到數(shù)據(jù)庫中查詢輸入的用戶名和密碼是否存在以及中查詢輸入的用戶名和密碼是否存在以及是否匹配,如果匹配,則進(jìn)入下一頁面
34、,是否匹配,如果匹配,則進(jìn)入下一頁面,如果不匹配,則給出錯誤提示。如果不匹配,則給出錯誤提示。 5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問習(xí)題:制作一網(wǎng)頁,要是實現(xiàn)注冊功能習(xí)題:制作一網(wǎng)頁,要是實現(xiàn)注冊功能 當(dāng)用戶輸入注冊的用戶名、密碼、確認(rèn)當(dāng)用戶輸入注冊的用戶名、密碼、確認(rèn)密碼、性別、年齡等信息后,將用戶輸入密碼、性別、年齡等信息后,將用戶輸入的注冊信息插入數(shù)據(jù)庫,并能通過注冊的的注冊信息插入數(shù)據(jù)庫,并能通過注冊的用戶名和密碼實現(xiàn)登陸功能。用戶名和密碼實現(xiàn)登陸功能。 5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問2、DataAdapter和和DataSet 雖然連接數(shù)據(jù)庫的應(yīng)用程序使用雖然連接數(shù)據(jù)庫的應(yīng)用程序使用DataReader就已經(jīng)足夠了,但是,就已經(jīng)足夠了,但是, DataReader不能很好地支持?jǐn)?shù)據(jù)庫訪問的斷不能很好地支持?jǐn)?shù)據(jù)庫訪問的斷開連接模型。而開連接模型。而DataAdapter和和DataSet類則類則滿足了這一需求。滿足了這一需求。5.4 ADO.NET的數(shù)據(jù)訪問的數(shù)據(jù)訪問 DataSet是是ADO.NET斷開連接體系結(jié)構(gòu)斷開連接體系結(jié)構(gòu)中主要的數(shù)據(jù)存儲工具。填充中主要的數(shù)據(jù)存儲工具。填充DataSet時,時,并非通過并非通過Connection對象將對象將DataSet直接
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法學(xué)概論考試的整體規(guī)劃與試題及答案
- 2025屆新疆烏魯木齊仟葉學(xué)校七下數(shù)學(xué)期末達(dá)標(biāo)檢測模擬試題含解析
- 計算機(jī)二級VB考試知名試題及答案
- 財務(wù)業(yè)務(wù)工作目標(biāo)規(guī)劃計劃
- 軟件水平考試經(jīng)典試題及答案解析
- 2024年西安碑林區(qū)友誼小學(xué)招聘筆試真題
- 2024年溫州榕園學(xué)校引進(jìn)教育人才筆試真題
- 2024年海南省農(nóng)業(yè)農(nóng)村廳下屬事業(yè)單位真題
- 2024年秦皇島事業(yè)單位招聘筆試真題
- 2024年甘肅省應(yīng)急管理廳下屬事業(yè)單位真題
- 《智慧養(yǎng)老》創(chuàng)新創(chuàng)業(yè)大賽ppt
- 冀教版三至四年級《發(fā)展柔韌性練習(xí)》評課稿
- 肺動脈瓣狹窄球囊擴(kuò)張術(shù)臨床路徑
- 一年級語文繪本《烏鴉面包店》課件PPT
- 消化系統(tǒng)(寵物解剖生理)
- 漢語拼音聲母韻母拼讀全表打印版
- 運動系統(tǒng)病例分析01
- 天津市南開區(qū)南開中學(xué)2022-2023學(xué)年物理高二下期末復(fù)習(xí)檢測試題含解析
- 功與功率 課件高一下學(xué)期物理人教版(2019)必修第二冊
- 成品入庫、發(fā)貨流程圖
- 光柵安全檢查作業(yè)指導(dǎo)
評論
0/150
提交評論