Web開發(fā)實用技術Web應用程序開發(fā)技術.ppt
《Web開發(fā)實用技術Web應用程序開發(fā)技術.ppt》由會員分享,可在線閱讀,更多相關《Web開發(fā)實用技術Web應用程序開發(fā)技術.ppt(115頁珍藏版)》請在裝配圖網上搜索。
第6章 NETWeb應用程序開發(fā)技術 學習要點 1 掌握C 語言編程技術2 了解ASP NET的運行模式3 熟悉ASP NET的服務器對象4 掌握ASP NET基本控件的使用5 學會配置Web config文件6 掌握ADO NET數據庫訪問技術7 學會使用VS2005創(chuàng)建Web服務8 掌握進行 NET控件開發(fā)的技術 NETWeb應用程序開發(fā)技術 要學好ASP NET的編程 必須掌握一種編程語言 本章將首先介紹C 語言 為讀者編程提供參考 詳細的C 編程方法請看專門書籍 然后介紹了主要Web服務器標準控件 服務器端驗證控件和ASP NET內置服務器對象等的使用 介紹了Web config文件的作用和常用配置參數 重點介紹了ADO NET數據庫訪問技術以及執(zhí)行存儲過程 數據庫的事務處理 跨數據庫訪問 數據綁定技術等內容 給出了創(chuàng)建和訪問Web服務的實例 以案例方式對 NET中的代碼重用實現(xiàn)技術 包括Web開發(fā)中的類庫構建與訪問 Web自定義控件和工具箱控件開發(fā)等進行了初步介紹 最后實例演示了如何在ASP NET中進行XML編程 第6章 NETWeb應用程序開發(fā)技術 6 1C 語言初步6 2常用ASP NET控件的使用6 3Web config文件的配置6 4ASP NET內置服務器對象與Global asax文件6 5ADO NET數據庫訪問技術6 6用VS2005創(chuàng)建和訪問Web服務實例6 7Web開發(fā)中的類庫構建與訪問6 8Web控件開發(fā)實例6 9ASP NET中XML編程基礎 6 1C 語言初步 6 1 1C 程序的基本結構6 1 2C 中的數據類型6 1 3C 變量聲明及其初始化6 1 4C 表達式6 1 5C 控制語句6 1 6C 類聲明 6 2常用ASP NET控件的使用 6 2 1服務器端標準控件6 2 2服務器端驗證控件6 2 3服務器控件使用注意事項6 2 4服務器端數據訪問控件 6 4ASP NET內置服務器對象與Global asax文件 6 4 1ASP NET內置服務器對象6 4 2Global asax文件 6 5ADO NET數據庫訪問技術 6 5 1Connection對象6 5 2Command對象6 5 3DataReader對象6 5 4Dataset對象與DataAdapter對象6 5 5執(zhí)行存儲過程6 5 6數據庫事務處理6 5 7跨數據庫訪問6 5 8數據綁定技術 6 7Web開發(fā)中的類庫構建與訪問 6 7 1在Web開發(fā)中構建一個類庫6 7 2在Web開發(fā)中訪問類庫 6 8Web控件開發(fā)實例 6 8 1建立用戶自定義控件6 8 2工具箱控件的創(chuàng)建與使用 6 1 1C 程序的基本結構 C 是由C和C 發(fā)展而來的面向對象和類型安全的編程語言 C 讀作CSharp 它和JAVA非常相近 其目標在于把VisualBasic的高生產力和C 本身的能力結合起來 下面我們通過一個C 語言的簡單例子來了解一些概念和用C 語言編寫程序的方法 例6 1 usingSystem classHello staticvoidMain Console WriteLine Hello world 下面對這個程序進行一些說明 1 C 程序的源代存儲在擴展名為 cs的文件中 2 usingSystem引用名稱空間 名稱空間是在Microsoft NET類庫中提供的 使用 using 命令后 就可以無障礙地使用名稱空間中的各種類型員 例如System名稱空間下有一個IO名稱空間 IO名稱空間下又有一個File名稱空間 現(xiàn)在我們要使用該空間則在引用的時候可以寫成usingSystem IO File 3 Main方法是類Hello中的一個成員 它有static的說明符 所以它是類Hello中的一個方法而不是此類中的實例 Main方法是應用程序的主入口點 也稱作開始執(zhí)行應用程序的方法 4 C 語言編譯器CSC EXE只是將程序員編寫的代碼編譯成MSIL MicrosoftIntemediateLanguage 中間語言 中間語言在安裝時被運行庫編譯成本機代碼或者首次運行時被實時編譯 因此例6 1中的hello exe只是一個由中間語言可執(zhí)行文件頭組成的可移植執(zhí)行文件 下面我們從以下幾個方面對C 語言進行詳細介紹 6 1 2C 中的數據類型 C 支持兩種類型 數據類型和引用類型 數據類型和引用類型的區(qū)別在于 數據類型變量直接包含它們的數據 而引用類型變量是存儲對于對象的引用 對于引用類型 有可能兩個變量引用相同的對象 因而可能出現(xiàn)對一個變量的操作影響到其他變量所引用對象的情況 對于數據類型 每個變量都有它們自己對數據的拷貝 所以不太可能因為對一個進行操作而影響到其他變量 6 1 3C 變量聲明及其初始化 我們結合表6 1來介紹數據類型變量聲明及其初始化表6 1 C 中有靜態(tài)變量 引用參數 數組變量 實例變量 值參數 輸出參數和局部變量7種變量類型 具體參照下表 在C 中 既可以通過值也可以通過引用傳遞參數 通過引用傳遞參數允許函數成員更改參數的值 并保持該更改 若要通過引用傳遞參數 可使用ref或out關鍵字 ref和out這兩個關鍵字都能夠提供相似的功效 其作用也很像C中的指針變量 它們的區(qū)別是 1 使用ref型參數時 傳入的參數必須先被初始化 對out而言 必須在方法中對其完成初始化 2 使用ref和out時 在方法的參數和執(zhí)行方法時 都要加Ref或Out關鍵字 以滿足匹配 3 out適合用在需要retrun多個返回值的地方 而ref則用在需要被調用的方法修改調用者的引用的時候 注 在C 中 方法的參數傳遞有四種類型 傳值 byvalue 傳址 byreference 輸出參數 byoutput 數組參數 byarray 傳值參數無需額外的修飾符 傳址參數需要修飾符ref 輸出參數需要修飾符out 數組參數需要修飾符params 傳值參數在方法調用過程中如果改變了參數的值 那么傳入方法的參數在方法調用完成以后并不因此而改變 而是保留原來傳入時的值 傳址參數恰恰相反 如果方法調用過程改變了參數的值 那么傳入方法的參數在調用完成以后也隨之改變 實際上從名稱上我們可以清楚地看出兩者的含義 傳值參數傳遞的是調用參數的一份拷貝 而傳址參數傳遞的是調用參數的內存地址 該參數在方法內外指向的是同一個存儲位置 6 1 4C 表達式 C 的表達式大致包含了算術表達式 賦值表達式 關系表達式和邏輯表達式 1 算術表達式用算術操作符把數值連接在一起的 符合C 語法的表達式稱為算術表達式 算術操作符包括 2 賦值表達式C 賦值操作符的運算規(guī)則下表所示 3 關系表達式 等操作符稱為關系操作符 用關系操作符把運算對象連接起來并符合C 語法的式子稱為關系表達式 關系表達式要么返回true要么返回false 4 邏輯表達式 and or 和 not 操作符稱為邏輯操作符 用邏輯操作符把運算對象連接起來并符合C 語法的式子稱為邏輯表達式 6 1 5C 控制語句 C 中控制語句主要包括分支和循環(huán)語句 分支語句有3種 1 三元運算符 例如 a b 5 100 10表示b 5時a 100 否則a 10 2 if語句 3 switch語句 循環(huán)語句有4種 1 已知步長的for語句 2 foreach語句 3 while語句 4 dowhile語句 它們的語法結構如表6 4所示 其中switch語句可一次將測試變量與多個值比較 而if僅僅測試一個條件 對于循環(huán)語句可用break和continue語句決定是否跳出循環(huán)或繼續(xù)執(zhí)行循環(huán) foreach語句可以遍歷一個集合中的所有元素 6 1 6C 類聲明類是一種將數據成員 函數成員和嵌套類型等進行封裝的數據結構 它在面向對象基礎上引入了接口 屬性 方法 事件等組件特性 其數據成員可以是常量或域 函數成員可以是方法 屬性 索引 事件 操作符或靜態(tài)構造函數和析構函數 構造函數在創(chuàng)建對象時被自動調用 用來執(zhí)行對象的初始化操作 其函數名總是與類名相同 析構函數在釋放對象時被調用 用來刪除對象前做一些清理工作 類的訪問修飾符有五種可能形式 如下表所示 public 對任何類和成員都公開 無限制訪問 protected 僅僅對該類以及該類的派生類公開 private 僅僅對該類公開 internal 只能值包含該類的程序集中訪問該類 只是單獨的項目 而不是整個解決方案 protectedinternal 只能在本類 派生類或者包含該類的程序集中訪問 下面簡要介紹類成員的有關概念 1 常數一個常數是一個代表常數值的類成員即某個可以在編譯時計算的數值 只要沒有循環(huán)從屬關系 允許常數依賴同一程序中的其他常數 2 域 字段 域是一個代表和某對象或類相關的變量的成員 域也叫成員變量 它表示存儲位置 用來保存類的各種數據信息 域可以是靜態(tài)的 只讀域可以用來避免錯誤的發(fā)生 對于一個只讀域的賦值 只會在相同類中的部分聲明和構造函數中發(fā)生 3 方法方法是一個執(zhí)行可以由對象或類完成的計算或行為的成員 方法有一個形式參數列表 可能為空 一個返回數值 或void 并且可以是靜態(tài)也可以是非靜態(tài) 靜態(tài)方法要通過類來訪問 非靜態(tài)方法 也稱為實例方法 通過類的實例來訪問 方法可以被重復調用 這意味著只要有一個唯一的簽名 多個方法可能有相同的名稱 方法的簽名包括方法 數據 修飾符和它的形式參數的各種類型的名稱 方法的簽名不包括return類型 4 屬性屬性是提供對對象或類的特性進行訪問的成員 屬性的例子包括字符串的長度 字體的大小 窗口的焦點 用戶的名字等等 屬性是域的自然擴展 兩者都是用相關類型成員命名 并且訪問域和屬性的語法是相同的 然而 與域不同 屬性不指示存儲位置 作為替代 屬性有存取程序 它指定聲明的執(zhí)行來對它們進行讀或寫 屬性是由屬性聲明定義的 屬性聲明的第一部分看起來和域聲明相當相似 第二部分包括一個get存取程序和一個set存取程序 5 事件事件是使得對象和類提供通知的成員 一個類通過提供事件聲明來定義一個事件 這看起來與域和事件聲明相當類似 但是有一個event關鍵字 這個聲明的類型必須是delegate類型 6 操作符操作符是一個定義了可以用來使用在類的實例上的表達式 7 索引器索引器 indexer 是使得對象可以像數組一樣被索引的成員 屬性使類似域的訪問變得可能 索引器使得類似數組的訪問變得可能 索引器的聲明類似于屬性的聲明 最大的不同在于索引器是無名的 由于this是被索引 所以用于聲明中的名稱是this class或struct只允許定義一個索引器 而且索引器總是包含單個索引參數 索引參數在一對方括號中提供 用于指定要訪問的元素 8 實例構造函數實例構造函數是實現(xiàn)對類中實例進行初始化的行為的成員 是一種特殊的方法 它與類同名 能獲取參數 但不能返回任何值 每個類都必須至少有一個構造函數 如果類中沒有提供構造函數 那么編譯器會自動提供一個沒有參數的默認構造函數 9 析構函數析構函數 destructor 是實現(xiàn)破壞一個類的實例的行為的成員 析構函數完成對象被垃圾回收時需要執(zhí)行的整理工作 在碎片收集時會被自動調用 在C 中 沒有提供一個delete操作符 由運行庫控制何時摧毀一個對象 析構函數的語法是首先寫一個 符號 然后跟上類名 析構函數不能有參數 不能帶任何訪問修飾符 比如public 而且不能被調用 不能在一個struct中聲明一個析構函數 10 靜態(tài)構造函數靜態(tài)構造函數是實現(xiàn)對一個類進行初始化的行為的成員 靜態(tài)構造函數不能有參數 不能有修飾符而且不能被調用 當類被加載時 類的靜態(tài)構造函數自動被調用 11 繼承繼承 Inheritance 是面向對象的一個關鍵概念 它描述了類之間的一種關系 假如多個不同的類具有大量通用的特性 而且這些類相互之間的關系非常清晰 那么使用繼承就能避免大量重復的工作 類支持單繼承 System Object類是所有類的基類 所有類都是隱式地從System Object類派生而來的 方法 屬性和索引器都可以是虛擬 virtual 的 這意味著他們可以在派生的類中被覆蓋 override 可以通過使用abstract關鍵字來說明一個類是不完整的 只是用作其他類的基類 這樣的類被稱為抽象類 抽象類可以指定抽象函數 非抽象派生類必須實現(xiàn)的成員 12 接口接口定義了一個連接 一個類或結構必須根據它的連接來實現(xiàn)接口 接口可以把方法 屬性 索引器和事件作為成員 類和結構可以實現(xiàn)多個接口 因為通過外部指派接口成員實現(xiàn)了每個成員 所以用這種方法實現(xiàn)的成員稱為外部接口成員 外部接口成員可以只是通過接口來調用 13 委派委派 delegates 是指向一個方法的指針 委派與C 中的函數指針相似 與函數指針不同委派是類型安全并且可靠的 委派是引用類型 它從公共基類 System Delegate派生出來 一個委派實例壓縮了一個方法 可調用的實體 對于靜態(tài)方法 一個可調用實體由類和類中的靜態(tài)方法組成 委派的一個有趣而且有用的特性是它不知道或不關心與它相關的對象的類型 對象所要做的所有事情是方法的簽名和委派的簽名相匹配 這使得委派很適合 匿名 調用 而這是個很有用的功能 定義和使用委派分為三步 聲明 實例化和調用 用delegate聲明語法來聲明委派 delegatevoidSimpleDelegate 聲明了一個名為SimpleDelegate的委派 它沒有任何參數并且返回類型為void 14 枚舉枚舉類型的聲明為一個符號常數相關的組定義了一個類型名稱 枚舉應用于 多選擇 的場合 運行時間是由在編譯時所知道的固定的選擇數目所決定 因為使用枚舉可以使代碼更可讀還可以自歸檔 所以使用枚舉比使用整數常數要好 代碼的自歸檔特點也使得開發(fā)工具可以幫助編寫代碼和進行一些其他的 設計者 行為 在本小節(jié)最后 我們給出一個范例 本店經營各類毛絨玩具禮品 公仔 靠墊 掛件等等 支持批發(fā)零售 歡迎來樣看樣定做生產 為了賺人氣 本店所有商品批發(fā)價銷售 超低秒殺 雖然我們的信譽不高 但我們會以誠信為本 為您提供質高價廉的商品和優(yōu)質的服務 祝您購物愉快 歡迎大家來逛逛 揚州五亭龍玩具總動員 個人小廣告 6 2常用ASP NET控件的使用 ASP NET控件主要分為以下八類 如表所示 6 2 1服務器端標準控件 1 Label和Literal控件使用Label控件在網頁的設置位置上顯示文本 可以通過Text屬性自定義顯示文本 Text屬性中可以包含其他HTML元素 Literal控件和Label控件類似 但它不可向文本中添加任何HTML元素 因此 Literal控件不支持包括位置屬性在內的任何樣式屬性 轉換成客戶端HTML代碼后 Literal則是什么標記都不帶 但Literal控件允許指定是否對內容進行編碼 通常情況下 當希望文本和控件直接呈現(xiàn)在頁面中而不使用任何附加標記時 可使用Literal控件 2 TextBox文本框控件該控件用于獲取用戶輸入的文本或顯示文本 Text控件常用的屬性如下表所示 3 Image控件該控件是用來插入圖片的 常用的屬性如下表所示 4 BUTTON LINKBUTTON IMAGEBUTTON控件這三個控件分別表示普通按鈕 超鏈接形式的按鈕和圖像按鈕 每當用戶單擊按鈕時 即調用CLICK事件處理程序 這三個控件常用的屬性如下表所示 CommandName CommandArgument使用范例 5 HyperLink控件該控件用于制作文本或圖片超級鏈接 常用的屬性下表所示 6 RadioButton單選按鈕該控件為用戶提供由兩個或多個互斥選項組成的選項集 當用戶選擇某單選按鈕時 同一組中的其他單選按鈕不能同時被選定 當單擊RadionButton按鈕時 其Checked屬性設置為true 并且調用Click事件處理程序 當Checked屬性的值更改時 將引發(fā)CheckedChanged事件 用戶可以通過用Text屬性設置控件內顯示的文本 RadioButton控件常用的屬性如下表所示 7 CheckBox復選框該控件通常是成組使用來完成多重選項的目的 Checkbox控件常用的屬性如表所示 CheckBox控件使用范例 8 DropDownList控件DropDownList控件使用戶可以從下拉列表框中進行選擇 DropDownList控件常用屬性及說明如下表所示 DropDownList控件使用范例 9 ListBox列表框列表框通過顯示多個選項供用戶選擇達到與用戶對話的目的 ListBox控件常用的屬性如下表所示 10 FileUpload文件上載控件該控件可實現(xiàn)讓用戶在客戶端選擇一個文件 然后放到Web服務器的某個指定的文件夾下 FileUpload文件上載控件使用范例 11 Panel和Placeholder控件Panel和Placeholder控件都屬于容器控件 容器控件是指該控件可以動態(tài)容納其他控件或HTML元素 要在運行時刻向Web頁面中動態(tài)添加內容 利用容器控件即可實現(xiàn)動態(tài)添加內容到Web頁中 Panel和Placeholder控件 占位控件 轉換成客戶端HTML代碼后 呈現(xiàn)為div元素 PlaceholderWeb服務器控件可以將空的容器控件放置到頁內 然后在運行時動態(tài)添加 刪除子元素等 該控件只呈現(xiàn)其子元素 不具有自己的基于HTML的輸出 Panel服務器控件最終在客戶端呈現(xiàn)為div元素 但在Web開發(fā)時允許用戶在該控件中添加其他控件 而且在運行過程中也允許動態(tài)添加控件 6 2 2服務器端驗證控件服務器端驗證控件是ASP NET控件中新產生的一類驗證控件 當用戶輸入錯誤時 驗證控件可以顯示錯誤信息 驗證控件在正常工作情況下是不可見的 只有當用戶輸入數據有誤時 它們才是可見的 在具體介紹每個控件之前先了解一下它們的公共屬性 驗證控件的公共屬性如下表所示 服務器端驗證控件包含RequiredFieldValidator RangeValidator RegularExpressionValidator CompareValidator CustomValidator ValidationSummary六種驗證控件 1 RequiredFieldValidator控件該控件又稱非空驗證控件 常用于文本輸入框的非空驗證 若在網頁上使用此控件 則當用戶提交網頁到服務器端時 系統(tǒng)自動檢查被驗證控件的輸入是否為空 如果為空 則網頁顯示錯誤信息 2 RangeValidator控件該控件又稱范圍驗證控件 當用戶輸入不在驗證范圍內的值時將印發(fā)頁面錯誤 該控件提供Integer String Date Double和Currency五種驗證 3 RegularExpressionValidator控件該控件又稱正則表達式驗證控件 它的驗證功能比非空驗證控件和范圍驗證控件更強大 用戶可以自定義或書寫自己的驗證表達式 4 CompareValidator控件該控件又稱比較驗證控件 主要用來驗證TextBox控件內容或者某個控件的內容與某個固定表達式的值是否相同 5 CustomValidator控件該控件又稱自定義控件 它使用自定義的嚴整函數來使用驗證方式 CustomValidator控件與其他驗證控件的最大區(qū)別是該控件可以添加客戶端驗證函數和服務器端驗證函數 客戶端驗證函數總是在ClientValidatorFunction屬性中指定的 而服務器端驗證函數總是通過OnServerValidate屬性來設定 并指定為ServerValidate事件處理程序 6 ValidationSummary控件該控件又稱錯誤總結控件 主要是收集本頁中所有驗證錯誤信息 并將它們組織好后顯示出來 6 2 3服務器控件使用注意事項 使用VS2005進行Web開發(fā)的初學者很容易產生對服務器控件的依賴性 幾乎所有Web頁面都采用服務器控件 HTML控件 客戶端控件 被束之高閣 當然這是一種簡便的編程方法 但卻是一種不考慮運行效率的做法 我們在本節(jié)開頭已介紹了客戶端控件和服務器控件的區(qū)別 服務器控件意味著要消耗更多的網絡帶寬和服務器資源 而客戶端控件的處理邏輯全部在瀏覽器中進行 因此不能養(yǎng)成使用服務器控件的習慣性思維 在使用控件的時候有必要思考一下采用客戶端控件的可能性 6 2 4服務器端數據訪問控件 數據訪問控件根據所實現(xiàn)的功能分為兩大類 數據源控件和數據綁定控件 數據源控件可實現(xiàn)對不同數據源的數據訪問 數據綁定控件主要用于以多種方式顯示數據 數據源控件和數據綁定控件如下表所示 接上表 數據源控件分為兩種 普通數據源控件和層次化數據源控件 樹型結構 普通數據源控件包括SqlDataSource ObjectDataSource AccessDataSource主要檢索帶有行和列的基于數據表的數據源 層次化數據源控件包括XmlDataSource和SiteMapDataSource 主要檢索包含層次化數據的數據源 1 SqlDataSource控件SqlDataSource控件可以用來從任何OLEDB或者符合ODBC的數據源中檢索數據 能夠訪問目前主流的數據庫系統(tǒng) 該控件常用的屬性及說明如下表所示 6 2 4 1數據源控件 2 AccessDataSource控件AccessDataSource是 NET提供了一種訪問Access數據庫的專用數據源控件 該控件能夠快速連接Access數據庫 并且通過SQL語句等對數據庫記錄實現(xiàn)操作 該控件常用的屬性及說明如下表所示 3 ObjectDataSource控件 多數ASP NET數據源控件 如SqlDataSource等 都在兩層應用程序層次結構中使用 在該層次結構中 表示層 ASP NET網頁 可以與數據層 數據庫和XML文件等 直接進行通信 但是 常用的應用程序設計原則是 將表示層與業(yè)務邏輯相分離 而將業(yè)務邏輯封裝在業(yè)務對象中 這些業(yè)務對象在表示層和數據層之間形成一層 從而生成一種三層應用程序結構 ObjectDataSource控件通過提供一種將相關頁上的數據控件綁定到中間層業(yè)務對象的方法 為三層結構提供支持 在不使用擴展代碼的情況下 ObjectDataSource使用中間層業(yè)務對象以聲明方式對數據執(zhí)行選擇 插入 更新 刪除 分頁 排序 緩存和篩選操作 ObjectDataSource控件使用反射調用業(yè)務對象的方法 以對數據執(zhí)行選擇 更新 插入和刪除操作 設置ObjectDataSource控件的TypeName屬性來指定要用作源對象的類名稱 3 XmlDataSource控件 XmlDataSource控件是專門針對XML數據而發(fā)布的數據源控件 該控件常用的屬性及說明如下表所示 4 SiteMapDataSource控件 SiteMapDataSource控件用來連接包含來自站點地圖的導航數據 此數據包括有關網站中的頁的信息 如URL 標題 說明和導航層次結構中的位置 該控件的使用較為復雜 有興趣的讀者可參閱其他專門書籍 6 2 4 2數據綁定控件 1 GridView控件GridView控件采用表格形式顯示從數據庫中獲取的數據集合 通過使用GridView控件 用戶可以顯示 編輯 刪除 排序和翻閱多種不同的數據源中的表格數據 該控件常用的屬性及說明如下表所示 GridView控件使用范例 2 Repeater控件數據綁定控件Repeater的主要功能是以更自由的方式來控制數據的顯示 它會按照所要求的樣式嚴格地輸出數據記錄 Repeater控件使用范例 3 DataList控件DataList服務器控件使用模板和樣式來顯示數據 它需要連接到某個數據源控件 實現(xiàn)不同布局的數據顯示 DataList控件所支持的模板類型類似于Reapter控件 但增加了編輯和選擇模板 編輯模板可用來刪除和修改記錄 選擇模板可用來處理選中某個記錄后的顯示方式 模板類型如下表所示 DataList控件的常用事件及說明如下表所示 DataList控件使用范例 3 DetailsView控件DetailsView控件的主要功能是以表格形式顯示和處理來自數據源的單條數據記錄 DetailsView控件支持以下功能 綁定至數據源控件 內置插入功能 內置更新和刪除功能 內置分頁功能 以編程方式訪DetailsView對象模型從而動態(tài)設置屬性 處理事件等 可通過主題和樣式進行自定義外觀 下表列出了可以在DetailsView控件中使用的7種不同行字段類型 DetailsView同樣支持模板功能 下表列出了它所支持的模板 DetailsView控件常用屬性與GridView控件相似 可以參照學習DetailsView控件的常用事件及說明如下表所示 DetailsView控件使用范例 4 FormView控件FormView控件用于顯示數據源中的單個記錄 FormView控件則默認創(chuàng)建一個空白的區(qū)域 實際上所創(chuàng)建的是一個只有一行一列的表格 FormView控件不具備自動創(chuàng)建表格顯示數據的功能 FormView控件需要開發(fā)人員自定義ItemTemplate PagerTemplate等模板屬性 以自定義方式顯示各個字段 FormView控件支持以下功能 支持綁定到數據源控件 內置數據插入 更新和刪除功能 內置分頁功能 允許以編程方式訪問FormView控件對象模型 以動態(tài)設置屬性 處理事件等 通過用戶定義的模板 主題和樣式自定義外觀 FormView控件作為一個數據綁定控件 可與數據源控件結合實現(xiàn)各種數據操作 當FormView控件通過DataSouceID屬性連接數據源控件后 該控件可利用數據源控件的內置功能 在自身內置功能的支持下 實現(xiàn)數據更新 刪除 添加和分頁等操作 由于FormView控件使用模板屬性 因此 沒有提供自動生成命令按鈕的功能 開發(fā)人員必須在模板屬性中 自行定義各種命令按鈕 這樣才能實現(xiàn)數據操作功能 DetailsView控件支持的模板見下表 FormView控件使用范例 5 ReportViewer控件ReportViewer服務器控件用來呈現(xiàn)表格格式數據 聚合數據和多維數據 它可以圖表的形式顯示數據 ReportViewer服務器控件可以配置成以本地處理模式或遠程處理模式運行 本地處理模式 是指ReportViewer控件在客戶端應用程序中處理報表 所有報表都是使用應用程序提供的數據作為本地過程處理的 遠程處理模式 是指由SQLServer2005ReportingServices報表服務器處理報表 在遠程處理模式下 ReportViewer控件用作查看器 顯示已經在ReportingServices報表服務器上發(fā)布的預定義報表 ReportViewer控件中常用的屬性如下表所示 6 6 2 3正確使用GridView Repeater和DataList控件數據綁定控件GridView Repeater和DataList是顯示數據的有力控件 其中GridView是迄今為止功能最為豐富的數據顯示控件 大部分功能可通過屬性設置來完成 甚至不需要編寫一行代碼就能實現(xiàn)強大的數據處理功能 許多初學者在進行Web開發(fā)時 只要遇到數據處理或顯示就習慣性地使用GridView控件 雖然使用GridView大大減少了開發(fā)者的編程工作量 但最大的問題就是該控件在處理數據時需要占用很多Web服務器資源 生成在客戶端呈現(xiàn)的HTML文件也非常大 而且只能以表格形式輸出數據 最終導致系統(tǒng)響應性能降低 我們建議在用戶數據量不大且不需要出色的界面效果 特別是當需要編輯 分頁 排序功能的時候 快的處理性能 具有更好的顯示效果的時候推薦使用Reapter控件 Reapter控件允許對用戶通過模板自定義數據項的輸出 處理速度非???但Reapter控件的缺點是 必須在各個模板中進行手工編寫代碼 對于分頁 排序 編輯等都必須編寫代碼 DataList控件的使用性能介于GridView和Repeater之間 可在DataList中通過屬性設置定義各個模板 然后部分地通過編程實現(xiàn)分頁 排序 數據編輯 6 3Web config文件的配置 ASP NET的應用程序配置文件web config是基于XML格式的純文本文件 存在于應用的各個目錄下 它決定了站點所在目錄及其子目錄的配置信息 并且子目錄下的配置信息覆蓋其父目錄的配置 1 配置文件的語法規(guī)則 標記配置內容被置于web config文件中的標記和之間 格式如下 配置內容 配置段句柄說明ASP NET的配置文件架構并未指定任何文件格式或者是支持的配置屬性 相反 它提出了 配置段句柄申明 的概念來支持任意的用戶定義配置段 格式如下 配置段具體定義配置的內容 供應用使用 配置段使用范例 2 ASP NET定義的標準配置段ASP NET定義的標準配置段及其說明如下表所示 所有配置信息都駐留在和根XML標記之間 標記間的配置信息分為兩個主區(qū)域 配置節(jié)處理程序聲明區(qū)域和配置節(jié)設置區(qū)域 配置節(jié)處理程序聲明出現(xiàn)在配置文件頂部和標記之間 包含在標記中的每個聲明都指定提供特定配置數據集的節(jié)的名稱和處理該節(jié)中配置數據的 NET框架類的名稱 配置節(jié)設置區(qū)域位于區(qū)域之后 它包含實際的配置設置 區(qū)域中的每個聲明都有一個配置節(jié) 每個配置節(jié)都包含子標記 這些子標記帶有包含該節(jié)設置的屬性 3 WebConfig文件詳解 節(jié)作用 配置ASP NET身份驗證支持 為Windows Forms PassPort None四種 該元素只能在計算機 站點或應用程序級別聲明 元素必需與節(jié)配合使用 節(jié)作用 控制對URL資源的客戶端訪問 如允許匿名用戶訪問 此元素可以在任何級別 計算機 站點 應用程序 子目錄或頁 上聲明 必需與節(jié)配合使用 節(jié)作用 配置ASP NET使用的所有編譯設置 默認的debug屬性為 True 在程序編譯完成交付使用之后應將其設為True Web config文件中有詳細說明 此處省略示例 作用 為ASP NET應用程序提供有關自定義錯誤信息的信息 它不適用于XMLWebservices中發(fā)生的錯誤 節(jié)作用 配置ASP NETHTTP運行庫設置 該節(jié)可以在計算機 站點 應用程序和子目錄級別聲明 作用 標識特定于頁的配置設置 如是否啟用會話狀態(tài) 視圖狀態(tài) 是否檢測用戶的輸入等 可以在計算機 站點 應用程序和子目錄級別聲明 作用 為當前應用程序配置會話狀態(tài)設置 如設置是否啟用會話狀態(tài) 會話狀態(tài)保存位置 作用 配置ASP NET跟蹤服務 主要用來程序測試判斷哪里出錯 4 自定義Web config文件配置節(jié)自定義Web config文件配置節(jié)過程分為兩步 一是在在配置文件頂部和標記之間聲明配置節(jié)的名稱和處理該節(jié)中配置數據的 NETFramework類的名稱 二是在區(qū)域之后為聲明的節(jié)做實際的配置設置 5 訪問Web config文件你可以通過使用ConfigurationSettings AppSettings靜態(tài)字符串集合來訪問 Web config文件配置節(jié)和訪問范例 6 4Global asax文件 開發(fā)應用程序的時候 有時候需要編寫一些處理程序級別的事件以及添加程序級別的邏輯代碼 這些代碼并不會處理單個的頁面請求 而是用于處理高層的應用程序級別的事件 比如Application Star Application End Application Error Session Start Session End等 這些代碼是放在Global asax文件中 Global asax文件繼承自HttpApplication類 它維護一個HttpApplication對象池 并在需要時將對象池中的對象分配給應用程序 Global asax文件包含以下事件 1 Application Init 在應用程序被實例化或第一次被調用時 該事件被觸發(fā) 對于所有的HttpApplication對象實例 它都會被調用 2 Application Disposed 在應用程序被銷毀之前觸發(fā) 這是清除以前所用資源的理想位置 3 Application Error 當應用程序中遇到一個未處理的異常時 該事件被觸發(fā) 4 Application Start 在HttpApplication類的第一個實例被創(chuàng)建時 該事件被觸發(fā) 它允許你創(chuàng)建可以由所有HttpApplication實例訪問的對象 5 Application End 在HttpApplication類的最后一個實例被銷毀時 該事件被觸發(fā) 在一個應用程序的生命周期內它只被觸發(fā)一次 6 Application BeginRequest 在接收到一個應用程序請求時觸發(fā) 對于一個請求來說 它是第一個被觸發(fā)的事件 請求一般是用戶輸入的一個頁面請求 URL 7 Application EndRequest 針對應用程序請求的最后一個事件 8 Application PreRequestHandlerExecute 在ASP NET頁面框架開始執(zhí)行諸如頁面或Web服務之類的事件處理程序之前 該事件被觸發(fā) 9 Application PostRequestHandlerExecute 在ASP NET頁面框架結束執(zhí)行一個事件處理程序時 該事件被觸發(fā) 10 Applcation PreSendRequestHeaders 在ASP NET頁面框架發(fā)送HTTP頭給請求客戶 瀏覽器 時 該事件被觸發(fā) 11 Application PreSendContent 在ASP NET頁面框架發(fā)送內容給請求客戶 瀏覽器 時 該事件被觸發(fā) 12 Application AcquireRequestState 在ASP NET頁面框架得到與當前請求相關的當前狀態(tài) Session狀態(tài) 時 該事件被觸發(fā) 13 Application ReleaseRequestState 在ASP NET頁面框架執(zhí)行完所有的事件處理程序時 該事件被觸發(fā) 這將導致所有的狀態(tài)模塊保存它們當前的狀態(tài)數據 14 Application ResolveRequestCache 在ASP NET頁面框架完成一個授權請求時 該事件被觸發(fā) 它允許緩存模塊從緩存中為請求提供服務 從而繞過事件處理程序的執(zhí)行 15 Application UpdateRequestCache 在ASP NET頁面框架完成事件處理程序的執(zhí)行時 該事件被觸發(fā) 從而使緩存模塊存儲響應數據 以供響應后續(xù)的請求時使用 16 Application AuthenticateRequest 在安全模塊建立起當前用戶的有效的身份時 該事件被觸發(fā) 在這個時候 用戶的憑據將會被驗證 17 Application AuthorizeRequest 當安全模塊確認一個用戶可以訪問資源之后 該事件被觸發(fā) 18 Session Start 在一個新用戶訪問應用程序Web站點時 該事件被觸發(fā) 19 Session End 在一個用戶的會話超時 結束或他們離開應用程序Web站點時 該事件被觸發(fā) Global asax文件使用范例 6 5ADO NET數據庫訪問技術 ADO NET是微軟在 NET平臺下一種全新的數據庫訪問機制 ADO NET滿足了ADO無法滿足的三個重要需求 為適應Web環(huán)境的編程需要提供了斷開的數據訪問模型 提供了與XML的緊密集成 提供了與 NET框架的無縫連接 6 5 1Connection對象 數據庫應用程序與數據庫進行數據交互 首先必須建立與數據庫的連接 ADO NET中 使用Connection對象完成此項功能 在這里要指出的是在創(chuàng)建連接之間要在程序中添加System Data和System Data SqlClient兩個命名空間 建立與數據庫的連接是通過數據庫連接字符串來實現(xiàn)的 在連接字符串中要設置一些參數的值 連接SqlServer數據庫的常用參數如下表所示 Connection對象常用的方法如下表所示 Connection對象使用范例 6 5 2Command對象 常用的Command對象的屬性有以下幾種 CommandText屬性 獲取或設置要對數據源執(zhí)行的sql命令 存儲過程或者數據表名稱 當調用ExecuteNuery ExecuteReader ExecuteScalar ExecuteXmlReader中的任意一個方法時 Command對象會執(zhí)行CommandText屬性所指定的內容 CommandTimeout屬性 獲取或設置Command對象超時時間 單位為秒 默認為30 如果Command對象在30秒時間內不能執(zhí)行CommandText屬性設定的內容便返回失敗 CommandType屬性 獲取或設置CommandText屬性代表的意義 可以為CommandType StoreProcedure 存儲過程 CommandType Text等 默認為Text Parameters屬性 獲取ParameterCollectionConnection屬性 獲取或設置Command對象要使用的數據連接 值為Connectiion對象 常用的Command對象的方法有以下幾種 Cancle 取消Command對象的執(zhí)行 CreateParameter 執(zhí)行CommandText屬性指定的內容 并返回被影響的列數 只有update insert delete三個sql語句回返回被影響的列數 其他的返回的都是 1ExecuteReader 執(zhí)行CommandText屬性指定的內容 并創(chuàng)建DataReader對象ExecuteScalar 執(zhí)行CommandText屬性指定的內容 返回結果的第一行第一列的值 次方法只用于執(zhí)行select語句Command對象使用范例 6 5 3DataReader對象 DataReader是用來從數據庫中檢索只讀 只進的數據流 使用DataReader可以提高應用程序的性能 因為一旦數據可用 DataReader就立即檢索該數據 而不是等待返回查詢的全部結果 并且在默認情況下 DataReader一次在內存中只存儲一行記錄 從而降低了系統(tǒng)開銷 常用的DataReader對象的屬性有如下幾種 FieldCount屬性 該屬性用來表示由DataReader得到的一行數據中的字段數 HasRows屬性 該屬性用來表示DataReader是否包含數據 IsClosed屬性 該屬性用來表示DataReader對象是否關閉 Item name ordinal 屬性 該屬性用來獲取或設置字段內容 name為字段名 ordinal為字段序號 可選用 常見的DataReader對象的方法有如下幾種 1 Close方法Close方法不帶參數 無返回值 用來關閉DataReader對象 由于DataReader在執(zhí)行SQL命令時一直要保持同數據庫的連接 所以在DataReader對象開啟的狀態(tài)下 該對象所對應的Connection連接對象不能用來執(zhí)行其他的操作 所以 在使用完DataReader對象時 一定要使用Close方法關閉該DataReader對象 否則不僅會影響到數據庫連接的效率 更會阻止其他對象使用Connection連接對象來訪問數據庫 2 Read 方法boolRead 方法會讓記錄指針指向本結果集中的下一條記錄 返回值是true或false 當Command的ExecuteReader方法返回DataReader對象后 須用Read方法來獲得第一條記錄 當讀好一條記錄想獲得下一下記錄時 也可以用Read方法 如果當前記錄已經是最后一條 調用Read方法將返回false 也就是說 只要該方法返回true 則可以訪問當前記錄所包含的字段 3 NextResult 方法NextResult 方法會讓記錄指針指向下一個結果集 當調用該方法獲得下一個結果集后 依然要用Read方法來開始訪問該結果集 4 GetValue inti 方法GetValue inti 方法根據傳入的列的索引值 返回當前記錄行里指定列的值 由于事先無法預知返回列的數據類型 所以該方法使用Object類型來接收返回數據 5 GetValues Object values 方法GetValues Object values 方法會把當前記錄行里所有的數據保存到一個數組里并返回 可以使用FieldCount屬性來獲知記錄里字段的總數 據此定義接收返回值的數組長度 6 獲得指定字段的方法獲得指定字段的方法有GetString GetChar GetInt32等 這些方法都帶有一個表示列索引的參數 返回均是Object類型 用戶可以根據字段的類型 通過輸入列索引 分別調用上述方法 獲得指定列的值 例如 在數據庫里 id的列索引是0 通過stringid GetString 0 代碼可以獲得id的值 7 返回列的數據類型和列名的方法可以調用GetDataTypeName 方法 通過輸入列索引 獲得該列的類型 這個方法的定義是 stringGetDataTypeName inti 可以調用GetName 方法 通過輸入列索引 獲得該列的名稱 這個方法的定義是 stringGetName inti 綜合使用上述兩方法 可以獲得數據表里列名和列的字段 8 IsDBNull inti 方法 boolIsDBNull inti 方法的參數用來指定列的索引號 該方法用來判斷指定索引號的列的值是否為空 返回True或False DataReader對象的使用范例 6 5 4Dataset對象與DataAdapter對象 DataSet對象在ADO NET中是一個全新的概念 也是ADO NET中一個最為重要的對象 DataSet是一種簡單并駐留在內存中的數據存儲方式 它作為一個相對獨立的實體 包含了全套數據 包括約束 關系 設置多表 DataSet雖然擁有類似于數據庫的結構 但并不等同于數據庫 首先 DataSet不僅可以存儲來自于數據庫中的數據 而且還可以存儲其他類型的數據 如XML格式文檔 其次DataSet與數據庫之間沒有直接的聯(lián)系 操作DataSet并不等同于數據庫中的數據也會發(fā)生改變 在DataSet上執(zhí)行的UPDATE 更新 或Delete 刪除 等操作 影響的僅僅是DataSet中存儲的數據 而不會在數據庫中執(zhí)行相同的操作 DataSet對象的常用屬性如下表所示 DataSet對象的常用方法如下表所示 DataAdapter對象是一種用來充當DataSet與實際數據源之間橋梁的對象 ADO NET通過該對象建立并初始化DataTable DataSet中的數據表 從而與DataSet結合在一起 DataAdapter對象在數據庫操作中與DataSet配合使用 可以執(zhí)行新增 查詢 修改和刪除等多種操作 DataAdapter對象的常用屬性如下表所示 DataAdapter對象的常用方法如下表所示 Dataset對象與DataAdapter對象使用范例 下圖給出了DataSet對象的模型結構 DataView對象 DataView對象表示DataSet對象中數據的定制視圖 他代表一個DataTable的數據查看方式 DataView對象可以指定篩選條件來選擇查看單個數據表或多個數據表中的部分數據 也可以指定與默認查看方式不同的排序方式 DataView對象的常用屬性如下表所示 DataView對象的常用屬性如下表所示 DataView對象使用范例 6 5 5執(zhí)行存儲過程 存儲過程是保存起來的可以接受和返回用戶提供的參數的Transact SQL語句的集合 在存儲過程中可以使用數據存取語句 流程控制語句 錯誤處理語句等 其主要特點是執(zhí)行效率高 可以重復使用 在應用程序中使用存儲過程一般性的步驟是 1 創(chuàng)建存儲過程 2 建立與相應數據庫的連接 3 調用存儲過程 4 在程序中說明執(zhí)行的類型是存儲過程 5 若要執(zhí)行的存儲過程有參數則完成填充Parameters集合 否則此步省略 6 執(zhí)行存儲過程應用程序中使用存儲過程范例 6 5 6數據庫事務處理 事務處理是把一組操作合并為一個邏輯上的工作單元 在系統(tǒng)中沒有出現(xiàn)錯誤的情況下 開發(fā)人員可以使用事務處理來控制并保持事務處理中每一個動作的連續(xù)性和完整性 在ADO NET中 可以使用Connection和Transaction對象啟動 提交和回滾事務 若要執(zhí)行事務 請執(zhí)行下列操作 調用Connection對象的BeginTransaction方法來標記事務的開始 BeginTransaction方法返回對Transaction的引用 該引用將分配給登記在事務中的Command對象 將Transaction對象分配給要執(zhí)行的Command的Transaction屬性 如果通過活動的Transaction對象對Connection執(zhí)行Command 但該Transaction對象尚未分配給Command的Transaction屬性 則將引發(fā)異常 事物處理是通過SqlTransaction類來實現(xiàn)的 此類包括了兩個屬性 Connection 指示同事務處理相關聯(lián)的SqlConnection對象 IsolationLevel 定義事務處理的IsolationLevel 屬性IsolationLevel是包括如下成員的枚舉對象 1 Chaos 從高度獨立的事務處理中出現(xiàn)的pendingchanges不能被覆蓋 2 ReadCommitted 當數據需要被非惡意讀取時 采用共享鎖定 sharedlocks 但數據仍然可以在事務處理結束時被更新 這造成了非重復性的數據讀取 nonrepeatablereads 或phantomdata的產生 3 ReadUncommitted 惡意讀取數據是可能發(fā)生的 這表示沒有使用共享鎖定 sharedlocks 并且沒有實現(xiàn)獨占鎖定 exclusivelocks 4 RepeatableRead 鎖定查詢中所用到的所有數據 由此避免其他用戶對數據進行更新 在phantomrows仍然可用的狀態(tài)下 這可以避免非重復性的數據讀取 nonrepeatablereads 5 IsolationLevel定義鎖定記錄的級別 但這一概念不在本文論述范圍之內 對象SqlTransaction也提供了類似的方法 你可以使用以下方法來進行事務處理 6 Commit 提交數據庫事務處理 7 Rollback 從未決狀態(tài) pendingstate 反轉 rollback 事務處理 事務處理一旦被提交后即不能執(zhí)行此操作 8 Save 在事務處理中創(chuàng)建savepoint可以對事務處理的一部分進行反轉 并且指定savepoint名稱 事物處理范例 6 5 7跨數據庫訪問 進行跨庫查詢的時候回遇到兩種情況 一是被操作的兩個數據庫位于同一臺物理機器上 一是被操作的兩個數據庫位于不同的物理機器上 下面分別對這兩種情況進行說明 1 被操作的兩個數據庫位于同一臺物理機器上這時我們需要在構造的sql語句中的表名前加上數據庫和DBO就可以 形如select fromDB1 DBO Table1我們在程序中建立的與數據庫的連接不需要改變 2 被操作的數據庫位于不同的物理機器上這時需要我們將另一數據庫所在的機器連接過來 同時對sql語句進行構造實現(xiàn)功能假設當前ServerName MyCurrentServer 其中一個TableName MyCurrentTable 鏈接的數據庫Servername MyLinkedServer DatabaseName MyLinkedDB 其中的一個TableName MyLinkedTable 則你的SQL語句可以這樣寫 selectA B fromMyCurrentTableA MyLinkedServer MyLinkedDB dbo MyLinkedTableB 跨庫處理范例 6 5 8數據綁定技術 數據綁定技術最通常的應用是把Web控件中用于顯示的屬性跟數據源綁到一起 從而在Web頁面上顯示數據 此外 也可以使用數據綁定技術設置Web控件的其他屬性 因此可以說 ASP NET的數據綁定技術非常靈活 數據源可以是數據庫中的數據 也可以是XML文檔 其他控件的- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- Web 開發(fā) 實用技術 應用程序 技術
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://ioszen.com/p-6391943.html