




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章JavaScript本章講述的主要內(nèi)容7.1JavaScript的基本概念7.2JavaScript程序設(shè)計基礎(chǔ)7.3JavaScript對象7.4BOM和DOM對象7.5實訓(xùn)設(shè)計浮動圖片效果
7.1JavaScript的基本概念7.1.1JavaScript概述JavaScript是一種通用的、跨平臺的、基于對象和事件驅(qū)動的客戶端腳本語言,其主要特點有以下幾個方面。(1)弱數(shù)據(jù)類型(2)跨平臺(3)基于對象Transformations,擴展樣式表轉(zhuǎn)換)進(jìn)行數(shù)據(jù)交換及操作。(4)基于事件驅(qū)動7.1JavaScript的基本概念7.1.1JavaScript概述JavaScript代碼格式不夠嚴(yán)謹(jǐn),使用比較靈活,但過于隨意將會導(dǎo)致代碼的可讀性降低,不易于后期維護(hù)和升級。因此,在編寫JavaScript程序時應(yīng)遵守以下規(guī)范。①書寫代碼時應(yīng)注意,瀏覽器解析JavaScript代碼時會忽略標(biāo)識符與運算符之間多余的空格。②書寫代碼時每條語句一般應(yīng)獨占一行,并以英文分號“;”為結(jié)束符。③代碼要使用縮進(jìn)格式編寫,以增強其層次感和可讀性。④代碼中可以使用“//”表示單行注釋,使用“/*……*/”表示多行注釋。7.1JavaScript的基本概念7.1.2JavaScript的代碼編寫規(guī)范行內(nèi)JavaScript語句
直接將JavaScript代碼寫在HTML元素的開始標(biāo)記中。(2)嵌入式JavaScript語句塊
將JavaScript代碼寫在<script>……</script>中。(3)使用獨立的.js文件7.2JavaScript程序設(shè)計基礎(chǔ)7.2.1數(shù)據(jù)類型和變量1.數(shù)據(jù)類型7.2JavaScript程序設(shè)計基礎(chǔ)7.2.1數(shù)據(jù)類型和變量2.變量和運算符聲明變量和為變量賦值(2)運算符JavaScript使用的運算符與C#語言的運算符大部分相同。如,算術(shù)運算符+、-、*、/;比較運算符<、>、==、>=、<=、!=;布爾運算符&&、||、!等。7.2JavaScript程序設(shè)計基礎(chǔ)7.2.1數(shù)據(jù)類型和變量3.變量的作用域變量的作用范圍是指可以訪問該變量的代碼區(qū)域。JavaScript中按變量的作用范圍分為全局變量和局部變量。①全局變量:可以在整個HTML文檔范圍中使用的變量,這種變量通常都是在函數(shù)體外定義的變量。②局部變量:只能在局部范圍內(nèi)使用的變量,這種變量通常都是在函數(shù)體內(nèi)定義的變量,所以只在函數(shù)體內(nèi)部有效。省略關(guān)鍵字var聲明的變量(未定義直接使用的變量),無論在函數(shù)體內(nèi)部還是外部,都是全局變量。7.2JavaScript程序設(shè)計基礎(chǔ)7.2.2流程控制語句1.分支結(jié)構(gòu)
if…elseif…else、switch語句2.循環(huán)結(jié)構(gòu)JavaScript的循環(huán)結(jié)構(gòu)主要由for語句、while語句和forin語句構(gòu)成。其中,for語句和while語句與C#中的語法格式及使用方法完全相同,這里不再贅述。C#中的foreach語句在JavaScript中稍有變化,其語法格式如下所示。7.2JavaScript程序設(shè)計基礎(chǔ)7.2.3JavaScript函數(shù)JavaScript內(nèi)置函數(shù)7.2JavaScript程序設(shè)計基礎(chǔ)7.2.3JavaScript函數(shù)2.自定義函數(shù)JavaScript除了可以使用預(yù)定義函數(shù)外,還可以根據(jù)需要自定義用于實現(xiàn)特定功能的函數(shù)。由于JavaScript是弱類型腳本程序設(shè)計語言,故在定義函數(shù)時無需聲明函數(shù)的參數(shù)類型和返回值類型。JavaScript的自定義函數(shù)分為命名函數(shù)、匿名函數(shù)、對象函數(shù)和自調(diào)用函數(shù)四種。自定義函數(shù)代碼可以書寫在<script></script>標(biāo)記之間,也可以書寫在.js文件中。在同一個<script></script>標(biāo)記中,函數(shù)定義可以書寫在調(diào)用語句之前或之后;但在不同的<script></script>標(biāo)記中函數(shù)定義語句只能書寫在調(diào)用語句之前。7.2JavaScript程序設(shè)計基礎(chǔ)7.2.3JavaScript函數(shù)2.自定義函數(shù)(1)命名函數(shù)7.2JavaScript程序設(shè)計基礎(chǔ)7.2.3JavaScript函數(shù)2.自定義函數(shù)
(2)匿名函數(shù)7.2JavaScript程序設(shè)計基礎(chǔ)7.2.3JavaScript函數(shù)2.自定義函數(shù)
(3)自調(diào)用函數(shù)
JavaScript函數(shù)除了可以被其它語句或事件調(diào)用外,也允許將函數(shù)的定義與調(diào)用一并實現(xiàn),這種函數(shù)稱為“自調(diào)用函數(shù)”。7.3JavaScript對象7.3.1JavaScript內(nèi)置對象
1.Array對象JavaScript的Array數(shù)組對象與C#不同的是它在聲明時無需指定數(shù)據(jù)類型,而且可以將不同類型的數(shù)據(jù)存放到同一數(shù)組中。Array對象的常用屬性是length,用于獲取數(shù)組中元素的個數(shù)。
Array對象的常用方法有concat、join、push、slice、sort和reverse。7.3JavaScript對象7.3.1JavaScript內(nèi)置對象
2.String對象可以使用以下2種方法創(chuàng)建String字符串對象。String對象的常用方法見表7-3。7.3JavaScript對象7.3.1JavaScript內(nèi)置對象
3.Date對象
需要說明的是,起點時間“1970年1月1日零時”指GMT(格林威治時間),精確計算時間時起點的時分秒還要加上當(dāng)前所在的時區(qū)。北京時間的時區(qū)為東8區(qū),起點時間實際為:“1970/01/0108:00:00”。
Date對象的常用方法
見表7-47.3JavaScript對象7.3.1JavaScript內(nèi)置對象
4.Math對象
Math對象中包含有一些數(shù)學(xué)常量(稱為Math對象的屬性)和一些數(shù)學(xué)函數(shù)方法。
常用屬性見表7-5
常用方法見表7-67.3JavaScript對象7.3.2自定義對象
在JavaScript中可以根據(jù)實際需要通過JSON方式或構(gòu)造函數(shù)方式創(chuàng)建用戶自定義對象。JSON(JavaScriptObjectNotation,JavaScript對象符號)是一種基于JavaScript的輕量級數(shù)據(jù)交換格式。1.使用JSON方式創(chuàng)建自定義對象7.3JavaScript對象7.3.2自定義對象
2.使用構(gòu)造函數(shù)方式創(chuàng)建自定義對象7.4BOM和DOM對象BOM對象的主要層次關(guān)系7.4BOM和DOM對象7.4.1Window對象
1.window對象的常用屬性7.4BOM和DOM對象7.4.1Window對象
2.window對象的常用方法參閱源代碼:ex7-37.4BOM和DOM對象7.4.2document對象
BOM中document對象及所屬下級對象構(gòu)成了DOM對象,它也是使用JavaScript操作網(wǎng)頁的最常用部分。1.Document對象的常用屬性7.4BOM和DOM對象7.4.2document對象2.Document對象的常用方法參閱源代碼:ex7-4、ex7-57.5實訓(xùn)設(shè)計浮動圖片效果7.5.1實訓(xùn)目的
①通過上機操作熟練掌握通過document對象操作HTML元素的基本方法,熟練掌握通過樣式設(shè)置控制HTML元素外觀的基本方法。②通過閱讀、錄入代碼,試運行程序,加深理解本實訓(xùn)功能實現(xiàn)的編程思路。通過按要求獨立完成對程序功能的擴展,掌握通過Internet解決學(xué)習(xí)中遇到問題的方法,進(jìn)一步提高代碼閱讀能力。7.5.2實訓(xùn)要求第8章使用jQuery本章講述的主要內(nèi)容8.1jQuery概述8.2jQuery語法基礎(chǔ)8.3通過jQuery操作DOM8.4實訓(xùn)
使用jQuery特效
8.1jQuery概述
jQuery是一個快速的,簡潔的JavaScript庫,它使用戶能更方便地處理DOM(DocumentObjectModel,文檔對象模型)、Events(事件)、實現(xiàn)動畫效果等,并且能方便地為網(wǎng)站提供Ajax交互。
概括的說,jQuery是基于JavaScript語言的框架編程,根據(jù)實際應(yīng)用中的常見需求對JavaScript的功能進(jìn)行了封裝,提供函數(shù)接口,簡化了JavaScript的操作,提倡“以更少的代碼,做更多的事情”(WriteLess,DoMore)。8.1jQuery概述8.1.1使用NuGet
NuGet是VS中默認(rèn)的添加第三方庫的方法,使用NuGet不但可以向項目中添加jQuery,也可以添加其它一些第三方庫。8.1jQuery概述8.1.2在.aspx和.html中引用jQuery通過NuGet將jQuery添加到網(wǎng)站后,還需要在希望使用jQuery功能的.aspx或.html頁面中添加相關(guān)引用語句。其語法格式與向頁面中添加普通.js文件引用完全相同。
例如:8.2jQuery語法基礎(chǔ)8.2.1jQuery代碼的書寫位置要求1.使用ready()函數(shù)ready()的函數(shù)可以將包括在其中的代碼推遲至DOM對象加載完畢再執(zhí)行。8.2jQuery語法基礎(chǔ)8.2.1jQuery代碼的書寫位置要求2.在引用了母版頁的內(nèi)容中書寫jQuery代碼①如果使用該母版頁的所有或絕大多數(shù)內(nèi)容頁都需要使用jQuery,則可將jQuery引用語句書寫在母版頁的<head>和</head>之間。將jQuery功能實現(xiàn)代碼書寫在內(nèi)容頁的<asp:ContentID="Content2"……>和</asp:Content>標(biāo)記區(qū)域的最下方。②使用該母版頁的內(nèi)容頁中只有個別內(nèi)容頁需要使用jQuery,則可將引用語句書寫在內(nèi)容頁的asp:ContentID="Content1"……>和</asp:Content>標(biāo)記之間。將jQuery功能實現(xiàn)代碼書寫在內(nèi)容頁的<asp:ContentID="Content2"……>和</asp:Content>標(biāo)記區(qū)域的最下方。8.2jQuery語法基礎(chǔ)8.2.2jQuery選擇器基本選擇器(1)通用選擇器:通用選擇器$(*)用于返回頁面中所有元素。(2)元素選擇器:元素選擇器$("元素名")用于返回指定類型的所有元素。(3)ID選擇器:ID選擇器$("#元素ID")用于返回指定元素ID值代表的單一元素。(4)類選擇器:類選擇器$(".類名稱")用于返回使用指定類名稱的所有元素。(5)組合選擇器:組合選擇器可以將多種選擇器組合在一起,返回所有符合條件的元素。8.2jQuery語法基礎(chǔ)8.2.2jQuery選擇器3.過濾選擇器使用過濾選擇器可以按照預(yù)設(shè)過濾規(guī)則(條件)篩選出所需要的頁面元素。參閱源代碼:ex8-28.3通過jQuery操作DOM8.3.1屬性操作attr()和removeAttr()方法
attr()方法用于獲取所匹配元素集合中第一個元素的屬性,也可以用來設(shè)置所匹配元素的一個或多個屬性值,attr()方法有如下所示的4種語法格式。8.3通過jQuery操作DOM8.3.1屬性操作2.prop()和removeProp()方法prop()方法用于獲取所匹配元素集合中第一個元素的屬性,也可以用來設(shè)置所匹配元素的一個或多個屬性值。
參閱源代碼:ex8-38.3通過jQuery操作DOM8.3.2樣式操作jQuery提供了一些用于控制、修改頁面元素外觀樣式的方法,如addClass()、removeClass()、toggleClass()和前面使用過的css()方法。此外,使用上節(jié)介紹的attr()方法,也可以實現(xiàn)對元素外觀的控制和修改。1.addClass()和removeClass()方法8.3通過jQuery操作DOM8.3.2樣式操作2.toggleClass()方法
toggleClass()方法用于實現(xiàn)元素樣式的添加或移除。當(dāng)元素的指定樣式存在時,移除該樣式,否則添加該樣式。
toggleClass(classname);
其中,classname表示css類名,toggleClass()方法被調(diào)用時首先判斷指定的CSS類是否已被應(yīng)用,若是則移除,否則應(yīng)用該CSS類。8.3通過jQuery操作DOM8.3.2樣式操作3.css()方法
css()方法是jQuery1.9以上版本新增內(nèi)容,用于獲取或設(shè)置匹配元素的CSS樣式,其語法格式有如下4種形式。參閱源代碼:ex8-48.3通過jQuery操作DOM8.3.3內(nèi)容操作內(nèi)容操作是指使用jQuery提供的方法獲取或修改元素或表單的內(nèi)容。jQuery常用的內(nèi)容操作方法有,html()、text()和val()方法。1.html()方法html()方法用于獲取或設(shè)置第一個匹配元素的HTML內(nèi)容,該方法僅對HTML和XHTML文檔有效,不能用于XML文檔。8.3通過jQuery操作DOM8.3.3內(nèi)容操作2.text()方法text()方法用于讀取或設(shè)置匹配元素的文本內(nèi)容,其語法格式及使用方法與html()方法相同。
text()方法與html()方法的區(qū)別在于,text()方法只能返回或設(shè)置匹配元素的純文本內(nèi)容,不能包含HTML標(biāo)記。3.val()方法
val()方法用于獲取或設(shè)置表單元素的值,包括文本框、下拉列表框、單選和復(fù)選框等元素。當(dāng)元素允許多選時,返回一個包含被選項的數(shù)組。
參閱源代碼:ex8-58.3通過jQuery操作DOM8.3.4jQuery常用特效方法show()和hide()方法show()方法和hide()方法可以通過遞增或遞減元素的width、height和opacity(透明度)屬性值實現(xiàn)元素的顯示和隱藏,其語法格式如下所示。8.3通過jQuery操作DOM8.3.4jQuery常用特效方法2.slideDown()、slideUp()和slideToggle()方法
slideDown()和slideUp()方法,以向下或向上滑動的動畫效果隱藏或顯示匹配的元素。這樣的動畫效果實際上是通過改變匹配元素的height屬性值來實現(xiàn)的。slideToggle()方法可將匹配元素隱藏的顯示出來,將顯示的隱藏起來。8.3通過jQuery操作DOM8.3.4jQuery常用特效方法3.fadeIn()、fadeOut()和fadeTo()方法
fadeIn()、fadeOut()和fadeTo()方法通過修改匹配元素的不透明度來顯示或隱藏它們。
fadeOut()方法將不透明度設(shè)置為0,使元素完全透明,然后將CSSdisplay屬性設(shè)置為“none”來實現(xiàn)完全隱藏元素;
fadeTo()方法允許指定一個0到1之間的不透明度值,來控制元素的透明程度;fadeIn()與fadeOut()相反,它將匹配元素的不透明度設(shè)置為1,使元素完全不透明(正常顯示)。8.3通過jQuery操作DOM8.3.4jQuery常用特效方法4.animate()方法animate()方法是一個功能強大的動畫效果設(shè)計方法,它可以在動畫實現(xiàn)的過程中指定眾多完善動畫效果的屬性。8.3通過jQuery操作DOM8.3.5jQuery事件處理和事件綁定“事件處理”是指某一時刻頁面元素對某種由系統(tǒng)或用戶引發(fā)的操作的響應(yīng)及處理,是系統(tǒng)與用戶進(jìn)行交換的主要途徑。如,前面已經(jīng)使用過的頁面加載、按鈕被單擊、文本框得到或失去焦點等事件發(fā)生時,自動調(diào)用對應(yīng)的函數(shù)。jQuery中的事件處理是在JavaScript的基礎(chǔ)上擴充、完善而構(gòu)成的,功能更加強大,使用更加便利。所謂“事件綁定”是指將頁面元素的事件類型與事件處理函數(shù)關(guān)聯(lián)起來。當(dāng)事件觸發(fā)時調(diào)用事先綁定的函數(shù)進(jìn)行處理。在JavaScript中通常采用在元素標(biāo)記中添加屬性的方式綁定事件處理函數(shù)8.3通過jQuery操作DOM8.3.5jQuery事件處理和事件綁定1.on()方法on()方法用于將事件處理函數(shù)綁定到元素的某個事件,其語法格式如下所示。對于常用事件(如,click、mouseover、mouseout等)jQuery允許省略on關(guān)鍵字,將事件綁定代碼簡化為類似如下的形式。8.3通過jQuery操作DOM8.3.5jQuery事件處理和事件綁定2.one()方法one()方法用于將元素的某個事件綁定到一個一次性(只被執(zhí)行一次)的事件處理函數(shù)。3.hover()方法hover()方法用于處理鼠標(biāo)指向事件。當(dāng)鼠標(biāo)指針進(jìn)入元素區(qū)域時觸發(fā)第一個函數(shù),離開時觸發(fā)第二個函數(shù),第二個函數(shù)為可選項,省略時表示鼠標(biāo)離開時不執(zhí)行任何操作。8.4實訓(xùn)使用jQuery特效8.4.1實訓(xùn)目的通過實訓(xùn)進(jìn)一步理解使用jQuery實現(xiàn)頁面效果的常用方法和手段;掌握通過jQuery處理客戶端事件的代碼編寫方法。8.4.2實訓(xùn)要求
在.aspx頁面中設(shè)計一個用于顯示職工信息的HTML表格,初次打開頁面時顯示圖8-10所示的奇偶行背景色不同的效果。
當(dāng)用戶通過單擊行首單選按鈕選擇某行時,單選按鈕呈選中狀態(tài),選中行的文本和背景色也呈高亮色顯示,如圖8-11所示。
如果用戶單擊了表格中某行而未單擊單選按鈕,則只改變該行文本和背景色呈高亮色顯示,不改變該行單選按鈕的狀態(tài)。第9章數(shù)據(jù)庫基礎(chǔ)和數(shù)據(jù)訪問控件本章講述的主要內(nèi)容9.1使用數(shù)據(jù)庫系統(tǒng)9.2使用數(shù)據(jù)控件訪問數(shù)據(jù)庫9.3實訓(xùn)使用數(shù)據(jù)訪問控件查詢數(shù)據(jù)庫
9.1使用數(shù)據(jù)庫系統(tǒng)9.1.1創(chuàng)建MicrosoftSQLSever數(shù)據(jù)庫在VS2015中內(nèi)置了SQLServer2014ExpressLocalDB版(安裝升級包后,可自動更新為LocalDB2016),LocalDB是SQLServerExpress的一種運行模式,也可以理解為超輕量級的SQLServer,特別適合在開發(fā)環(huán)境使用。1.新建數(shù)據(jù)庫和數(shù)據(jù)表在VisualStudio中提供了一個簡單的,操作遠(yuǎn)程SQLServer數(shù)據(jù)庫的“服務(wù)器資源管理器”。
9.1使用數(shù)據(jù)庫系統(tǒng)9.1.1創(chuàng)建MicrosoftSQLSever數(shù)據(jù)庫1.新建數(shù)據(jù)庫和數(shù)據(jù)表
新建數(shù)據(jù)庫9.1使用數(shù)據(jù)庫系統(tǒng)9.1.1創(chuàng)建MicrosoftSQLSever數(shù)據(jù)庫1.新建數(shù)據(jù)庫和數(shù)據(jù)表
新建表9.1使用數(shù)據(jù)庫系統(tǒng)9.1.1創(chuàng)建MicrosoftSQLSever數(shù)據(jù)庫2.SQLServer中常用數(shù)據(jù)類型
(1)char(n)(2)varchar(n)(3)text和varchar(MAX)(4)int(5)real和float(6)datetime9.1使用數(shù)據(jù)庫系統(tǒng)9.1.2常用SQL語句1.查詢語句(Select)SELECT語句主要用于從數(shù)據(jù)庫中返回需要的數(shù)據(jù)集,其語法格式為:SELECTselect_list[INTOnew_table_name]FROMtable_list[WHEREsearch_conditions][GROUPBYgroup_by_list][HAVINGsearch_conditions][ORDERBYorder_list[ASC|DESC]]9.1使用數(shù)據(jù)庫系統(tǒng)9.1.2常用SQL語句2.插入記錄語句(Insert)
使用Insert語句可以向表中插入記錄,該語句的語法格式為:INSERTINTO表名稱(字段名)VALUE(字段值)3.修改記錄語句(Update)使用Update語句可更新(修改)表中的數(shù)據(jù),其語法格式為:UPDATE表名稱SET字段名=值WHERE條件4.刪除記錄語句(Delete)使用DELETE語句可以刪除數(shù)據(jù)表中指定行,其語法格式為:DELETEFROM表名稱WHERE條件9.1使用數(shù)據(jù)庫系統(tǒng)9.1.3MicrosoftSQLServer常用操作1.創(chuàng)建存儲過程9.1使用數(shù)據(jù)庫系統(tǒng)9.1.3MicrosoftSQLServer常用操作2.分離和附加數(shù)據(jù)庫(1)分離數(shù)據(jù)庫
9.1使用數(shù)據(jù)庫系統(tǒng)9.1.3MicrosoftSQLServer常用操作3.分離和附加數(shù)據(jù)庫(2)附加數(shù)據(jù)庫首先需要將從其他計算機分離復(fù)制過來或從Internet中下載的數(shù)據(jù)庫文件復(fù)制到安裝有SQLServerExpressLocalDB的計算機中(通常需要復(fù)制到網(wǎng)站下的App_Data文件夾中)。啟動VS,在服務(wù)器資源管理器中右鍵單擊“數(shù)據(jù)連接”,在彈出的快捷菜單中執(zhí)行“新建連接”命令,按向?qū)崾炯纯赏瓿刹僮鳌?.1
使用數(shù)據(jù)庫系統(tǒng)9.1.4
MicrosoftAccess
Access數(shù)據(jù)庫管理系統(tǒng)是MicrosoftOffice的一個組件,是最常用的本地數(shù)據(jù)庫之一。在C#中可以方便地使用數(shù)據(jù)庫對象,操作Access數(shù)據(jù)庫。
1.創(chuàng)建數(shù)據(jù)庫
2.創(chuàng)建數(shù)據(jù)表9.2使用數(shù)據(jù)控件訪問數(shù)據(jù)庫9.2.1使用數(shù)據(jù)源控件1.AccessDataSource
AccessDataSource數(shù)據(jù)源控件是專門為連接Access數(shù)據(jù)庫而設(shè)計的。2.SqlDataSource
SqlDataSource數(shù)據(jù)源控件是專門為連接MicrosoftSQLServer數(shù)據(jù)庫而設(shè)計的。使用SqlDataSource控件還能建立與Oracle、ODBC、OLEDB、等數(shù)據(jù)庫的連接,并對這些數(shù)據(jù)庫執(zhí)行查詢、插入、編輯或刪除操作。3.LinqDataSource4.XmlDataSource5.SiteMapDataSource9.2使用數(shù)據(jù)控件訪問數(shù)據(jù)庫9.2.2使用GridView控件
GridView控件用于配合數(shù)據(jù)源控件實現(xiàn)對數(shù)據(jù)庫進(jìn)行瀏覽、編輯、刪除等操作。數(shù)據(jù)源控件主要包括用于連接Access數(shù)據(jù)庫的AccessDataSource和用于連接SQLServer數(shù)據(jù)庫的SqlDataSource。1.添加數(shù)據(jù)源控件2.添加GridView控件3.設(shè)置GridView控件的屬性參閱源代碼:ex9-19.2使用數(shù)據(jù)控件訪問數(shù)據(jù)庫9.2.3
使用FormView數(shù)據(jù)控件
FormView控件與前面介紹過的GridView控件相似,也是用于瀏覽或操作數(shù)據(jù)庫的數(shù)據(jù)控件。它與GridView相比主要的不同在于顯示在FormView中的數(shù)據(jù)記錄是分頁的,即每頁只顯示一條記錄。9.2使用數(shù)據(jù)控件訪問數(shù)據(jù)庫9.2.3
使用FormView數(shù)據(jù)控件9.2
使用數(shù)據(jù)控件訪問數(shù)據(jù)庫9.2.4
使用Repeater控件
Repeater控件是一個數(shù)據(jù)綁定列表控件(數(shù)據(jù)瀏覽控件),它允許通過為列表中顯示的每一項重復(fù)指定的模板來自定義數(shù)據(jù)顯示布局。Repeater控件是一個基本模板數(shù)據(jù)綁定列表,它并沒有內(nèi)置的布局或樣式,因此必須在這個控件的模板內(nèi)顯式聲明所有的HTML布局標(biāo)記、格式設(shè)置及樣式標(biāo)記等。也正因為此,Repeater控件具有更好的靈活性,但該控件沒有內(nèi)置的選擇和編輯功能。Repeater控件的模板2.使用Repeater控件
參閱源代碼:ex9-39.2
使用數(shù)據(jù)控件訪問數(shù)據(jù)庫9.2.5
使用DetailsView控件
DetailsView控件顧名思義是用于查看細(xì)節(jié)信息的控件,其作用主要是根據(jù)用戶在父表中項的選擇,在DetailView控件中顯示子表的信息。
1.使用DetailsView控件查看子表信息
2.使用DetailsView控件操作SQLServer數(shù)據(jù)庫
9.3實訓(xùn)使用數(shù)據(jù)訪問控件查詢數(shù)據(jù)庫9.3.1實訓(xùn)目的①通過上機操作熟練掌握GridView控件配合SqlDataSource控件操作數(shù)據(jù)庫的基本方法。理解GridView控件的常用屬性、事件和方法。②掌握在SqlDataSource控件設(shè)置中直接使用SQL語句和LIKE運算符的技巧。理解設(shè)置GridView控件外觀的基本技巧。9.3.2實訓(xùn)要求設(shè)計一個ASP.NET網(wǎng)站,要求使用SQLServer數(shù)據(jù)庫,配合GridView控件、SqlDataSource控件實現(xiàn)對數(shù)據(jù)記錄的多功能查詢。頁面裝入時顯示圖9-36所示的界面,其中顯示有當(dāng)前數(shù)據(jù)表中所有記錄,并添加有一個“總分”計算字段。用戶單擊標(biāo)題欄中字段名時,可按該字段進(jìn)行排序。數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)記錄可根據(jù)圖示自行設(shè)計。第10章使用ADO.NET訪問數(shù)據(jù)庫本章講述的主要內(nèi)容10.1ADO.NET概述10.2數(shù)據(jù)庫連接對象(Connection)10.3數(shù)據(jù)庫命令對象(Command)10.4ExecuteReader()方法和DataReader對象10.5數(shù)據(jù)適配器對象(DataAdapter)10.6DataSet概述10.7使用DataSet對象訪問數(shù)據(jù)庫10.8實訓(xùn)設(shè)計一個課程表管理程序10.1ADO.NET概述10.1.1ADO.NET的數(shù)據(jù)模型
ADO.NET采用了層次管理的結(jié)構(gòu)模型,各部分之間的邏輯關(guān)系如下圖所示。10.1ADO.NET概述10.1.2ADO.NET中的常用對象
在ADO.NET中數(shù)據(jù)集與數(shù)據(jù)提供器是兩個非常重要,而又相互關(guān)聯(lián)的核心組件。它們二者之間的關(guān)系如下圖所示。10.2數(shù)據(jù)庫連接對象(Connection)10.2.2創(chuàng)建Connection對象
SqlConnection
連接對象名=newSqlConnection(連接字符串);或:
SqlConnection
連接對象名=newSqlConnection();
連接對象名.ConnectionString=連接字符串;
10.2數(shù)據(jù)庫連接對象(Connection)10.2.2數(shù)據(jù)庫的連接字符串1.連接字符串中的常用屬性10.2數(shù)據(jù)庫連接對象(Connection)10.2.2數(shù)據(jù)庫的連接字符串2.連接到SQL
Server的連接字符串標(biāo)準(zhǔn)連接(2)信任連接10.2數(shù)據(jù)庫連接對象(Connection)10.2.2數(shù)據(jù)庫的連接字符串3.連接到OLEDB數(shù)據(jù)源的連接字符串(以連接Access數(shù)據(jù)庫為例)連接到Access2003數(shù)據(jù)庫:連接到Access2007/2010數(shù)據(jù)庫:10.2數(shù)據(jù)庫連接對象(Connection)10.2.2數(shù)據(jù)庫的連接字符串4.連接字符串的存放位置(1)把連接字符串寫在程序中一般的初級教程多采用這種方法。這樣寫當(dāng)然沒有錯誤,但是要在許多頁面中寫入連接字符串,這時候如果需要改動連接字符串(比如換用戶名和密碼)的話,就得逐個修改。(2)把連接字符串放在web.config文件中10.3數(shù)據(jù)庫命令對象(Command)10.3.1創(chuàng)建Command對象1.使用構(gòu)造函數(shù)創(chuàng)建Command對象
下面是使用構(gòu)造函數(shù)創(chuàng)建SqlCommand對象,并通過該對象的構(gòu)造函數(shù)參數(shù)來設(shè)置特定屬性值,其語法格式如下:SqlCommand
命令對象名=newSqlCommand(查詢字符串,連接對象名);或SqlCommand
命令對象名=newSqlCommand();命令對象名.Connection=連接對象名;命令對象名.CommandText=查詢字符串;10.3數(shù)據(jù)庫命令對象(Command)10.3.1創(chuàng)建Command對象2.使用CreateCommand()方法創(chuàng)建Command對象下面是使用Connection對象的CreateCommand()方法創(chuàng)建SqlCommand對象的語法格式:SqlCommandCommand對象名=Connection對象名.CreateCommand();Command對象名.CommandText=查詢字符串;10.3數(shù)據(jù)庫命令對象(Command)10.3.2Command對象的屬性和方法常用屬性
10.3數(shù)據(jù)庫命令對象(Command)10.3.2Command對象的屬性和方法常用方法10.4ExecuteReader()方法和DataReader對象10.4.1使用ExecuteReader()方法創(chuàng)建DataReader對象10.4ExecuteReader()方法和DataReader對象10.4.2DataReader對象的常用屬性及方法1)FieldCount屬性:該屬性用來獲取當(dāng)前行中的列數(shù),如果未放置在有效的記錄集中,則返回0,否則返回列數(shù)(字段數(shù)),默認(rèn)值為-1。2)HasRows屬性:用來獲取DataReader對象中是否包含任何行。3)Read()方法:使用該方法可將Reader指向當(dāng)前記錄,并將記錄指針移到下一行,從而可使用列名或列的次序來訪問列的值。如果到了數(shù)據(jù)表的最后,則返回一個布爾值false。4)GetValue()方法:5)GetValues()方法:6)NextResult()方法:7)Close()方法:參閱源代碼:ex10-310.5數(shù)據(jù)適配器對象(DataAdapter)10.5.1DataAdapter對象概述DataAdapter對象是一個雙向通道,用來把數(shù)據(jù)從數(shù)據(jù)源中讀到一個內(nèi)存表中,以及把內(nèi)存中的數(shù)據(jù)寫回到一個數(shù)據(jù)源中。兩種情況下使用的數(shù)據(jù)源可能相同,也可能不相同。而這兩種操作分別稱作填充(Fill)和更新(Update)。DataAdapter對象通過Fill方法和Update方法來提供這一橋接器。10.5數(shù)據(jù)適配器對象(DataAdapter)10.5.2DataAdapter對象的屬性和方法常用的創(chuàng)建SqlDataAdapter對象的語法格式如下所示:SqlDataAdapter
對象名=newSqlDataAdapter(SqlStr,conn);其中SqlStr為Select查詢語句或SqlCommand對象,conn為SqlConnection對象。10.5數(shù)據(jù)適配器對象(DataAdapter)10.5.2DataAdapter對象的屬性和方法1.DataAdapter對象的常用屬性
DataAdapter對象的常用屬性見下表10.5數(shù)據(jù)適配器對象(DataAdapter)10.5.2DataAdapter對象的屬性和方法2.DataAdapter對象的常用方法
DataAdapter對象的常用方法見下表10.5數(shù)據(jù)適配器對象(DataAdapter)10.5.3DataTable對象DataTable對象是內(nèi)存中一個關(guān)系數(shù)據(jù)庫表,可以獨立創(chuàng)建也可以由DataAdapter來填充。聲明一個DataTable對象的語法格式如下所示:
DataTable
對象名=newDataTable();
一個DataTable對象創(chuàng)建后,通常需要調(diào)用DataAdapter的Fill()對其進(jìn)行填充,使DataTable對象獲得具體的數(shù)據(jù)集,而不再是一個空表對象。10.5數(shù)據(jù)適配器對象(DataAdapter)10.5.3DataTable對象1.創(chuàng)建DataTable對象在實際應(yīng)用中使用DataTable對象一般需要經(jīng)過以下幾個步驟:①創(chuàng)建數(shù)據(jù)庫連接。②創(chuàng)建Select查詢語句或Command對象。③創(chuàng)建DataAdapter對象。④創(chuàng)建DataTable對象。⑤調(diào)用DataAdapter對象的Fill()方法填充DataTable對象。10.5數(shù)據(jù)適配器對象(DataAdapter)10.5.3DataAdapter對象的屬性和方法2.DataTable對象的常用屬性
Columns屬性:該屬性用于獲取DataTable對象中表的列集合。
Rows屬性:該屬性用于獲取DataTable對象中表的行集合。
DefaultView屬性:該屬性用于獲取可能包括篩選視圖或游標(biāo)位置的表的自定義視圖。10.6DataSet概述
DataSet(數(shù)據(jù)集)對象是ADO.NET的核心構(gòu)件之一,它是數(shù)據(jù)的內(nèi)存流表示形式,提供了獨立于數(shù)據(jù)源的關(guān)系編程模型。DataSet表示整個數(shù)據(jù)集,其中包括有表、約束和表與表之間的關(guān)系。由于DataSet獨立于數(shù)據(jù)源,故其中可以包含應(yīng)用程序的本地數(shù)據(jù),也可以包含來自多個數(shù)據(jù)源的數(shù)據(jù)。這是DataSet與前面介紹的DataTable的關(guān)鍵不同。
DataSet提供了對數(shù)據(jù)庫的斷開操作模式(也稱為離線操作模式),當(dāng)DataSet從數(shù)據(jù)源獲取數(shù)據(jù)后就斷開了與數(shù)據(jù)源之間的連接。在本地完成了各項數(shù)據(jù)操作(增、刪、改、查等)后,可以將DataSet中的數(shù)據(jù)送回到數(shù)據(jù)源以更新數(shù)據(jù)庫記錄。10.6DataSet概述10.6.1DataSet與DataAdapter
DataSet是實現(xiàn)ADO.NET斷開式連接的核心,它通過DataAdapter從數(shù)據(jù)源獲得數(shù)據(jù)后就斷開了與數(shù)據(jù)源之間的連接(這一點與前面介紹過的DataReader對象完全不同),此后應(yīng)用程序所有對數(shù)據(jù)源的操作(定義約束和關(guān)系、添加、刪除、修改、查詢、排序、統(tǒng)計等)均轉(zhuǎn)向到DataSet,當(dāng)所有這些操作完成后可以通過DataAdapter提供的數(shù)據(jù)源更新方法將修改后的數(shù)據(jù)寫入數(shù)據(jù)庫。需要說明的是對于不同的數(shù)據(jù)源DataAdapter對象也有不同的形式,如用于連接Access數(shù)據(jù)庫的OleDbDataAdapter,用于連接SQLServer數(shù)據(jù)庫的SQLDataAdapter、用于連接ODBC數(shù)據(jù)源的OdbcDataAdapter、用于連接Oracle數(shù)據(jù)庫的OracleDataAdapter等。10.6DataSet概述10.6.2DataSet的組成
10.6DataSet概述10.6.3DataSet中的對象、屬性和方法1.DataSet中的對象
DataSet由大量相關(guān)的數(shù)據(jù)結(jié)構(gòu)組成,其中最常用的有如下5個子對象,其名稱及功能說明見下表。10.6DataSet概述10.6.3DataSet中的對象、屬性和方法2.DataSet對象的常用屬性
DataSet對象的常用屬性見下表。10.6DataSet概述10.6.3DataSet中的對象、屬性和方法3.DataSet對象的常用方法
DataSet對象的常用方法見下表。10.7使用DataSet訪問數(shù)據(jù)庫10.7.1創(chuàng)建DataSet創(chuàng)建數(shù)據(jù)集對象的語法格式為:DataSet
數(shù)據(jù)集對象名=newDataSet();或:DataSet
數(shù)據(jù)集對象名=newDataSet("表名");10.7使用DataSet訪問數(shù)據(jù)庫10.7.2填充DataSet所謂“填充”是指將DataAdapter對象通過執(zhí)行SQL語句從數(shù)據(jù)源得到的返回結(jié)果,使用DataAdapter對象的Fill方法傳遞給DataSet對象。其常用語法格式如下所示:Adapter.Fill(ds);或:Adapter.Fill(ds,tablename);
10.7使用DataSet訪問數(shù)據(jù)庫10.7.3添加新記錄通過DataSet向數(shù)據(jù)表添加新記錄的一般方法如下:1)建立與數(shù)據(jù)庫的連接。2)通過DataAdapter對象從數(shù)據(jù)庫中取出需要的數(shù)據(jù)。3)實例化一個SqlCommandBuilder類對象,并為DataAdapter自動生成更新命令。4)使用DataAdapter對象的Fill方法填充DataSet。5)使用NewRow()方法向DataSet中填充的表對象中添加一個新行。6)為新行中各字段賦值7)將新行添加到DataSet中填充的表對象中。8)調(diào)用DataAdapter對象的Update()方法將數(shù)據(jù)保存到數(shù)據(jù)庫。10.7使用DataSet訪問數(shù)據(jù)庫10.7.4修改記錄通過DataSet修改現(xiàn)有數(shù)據(jù)表記錄的操作方法與添加新記錄非常相似,唯一不同的地方是無需使用NewRow()添加新行,而是創(chuàng)建一個DataRow對象后,從表對象中獲得需要修改的行并賦給新建的DataRow對象,根據(jù)需要修改各列的值(為各字段賦以新值)。最后仍需要調(diào)用DataAdapter對象的Update()方法將更新提交到數(shù)據(jù)庫。10.7使用DataSet訪問數(shù)據(jù)庫10.7.5刪除記錄
使用DataSet從填充的表對象中刪除行時需要創(chuàng)建一個DataRow對象,并將要刪除的行賦值給該對象,而后調(diào)用DataRow對象的Delete()方法將該行刪除。當(dāng)然此時的刪除僅是針對DataSet對象的,若需從數(shù)據(jù)庫中刪除該行,還需要調(diào)用DataAdapter對象的Update()方法將刪除操作提交到數(shù)據(jù)庫。10.8實訓(xùn)設(shè)計一個課程表管理程序10.8.1實訓(xùn)目的①通過本實訓(xùn)進(jìn)一步理解使用DataSet配合DataAdapter和DataReader對象完成數(shù)據(jù)庫常規(guī)操作的一般步驟。②掌握ASP.NET標(biāo)準(zhǔn)控件的基本使用方法和常用屬性。③本實訓(xùn)除應(yīng)用到了DataSet、DataAdapter、DataReader等ADO.NET對象外,還涉及了許多SQL查詢語句和通過ASP.NET內(nèi)置對象,在不同頁面間傳遞數(shù)據(jù)的技巧,這些都是開發(fā)Web數(shù)據(jù)庫應(yīng)用程序的基本手段,要求在實訓(xùn)中認(rèn)真理解其含義及語句書寫格式。10.8.2實訓(xùn)要求在ASP.NET環(huán)境中使用DataSet配合DataAdapter對象,創(chuàng)建一個簡單的學(xué)校課程表管理程序。第11章LINQtoSQL數(shù)據(jù)庫操作本章講述的主要內(nèi)容11.1LINQ的概念11.2使用LinqDataSource控件11.3使用LINQtoSQL的對象和方法11.4實訓(xùn)使用LINQtoSQL操作數(shù)據(jù)庫
11.1LINQ的概念11.1.1LINQ的構(gòu)成LINQ的組成架構(gòu)如圖所示。11.1LINQ的概念11.1.2與LINQ相關(guān)的幾個概念1.匿名類型“匿名類型”也稱為“隱式類型”或“推斷類型”,如果在程序中需要使用到臨時類型,而又不希望去創(chuàng)建相應(yīng)的類時,可以考慮使用匿名類型。匿名類型使用var關(guān)鍵字進(jìn)行聲明。例如:var
stuinfo=new{StuName="張三",StuID="2009000234",StuAge=20};11.1LINQ的概念11.1.2與LINQ相關(guān)的幾個概念2.泛型要使用泛型需要引入System.Collections.Generic命名空間。例如,下列語句聲明并初始化了一個名為MyGeneric,用于表述一個字符串列表的泛型集合。List<string>MyGeneric=newLinst<string>;MyGeneric.Add("zhangsan");MyGeneric.Add("2009000234");MyGeneric.Add("工程機械0901");在VisualStudio2008中可以將上述代碼簡化為如下所示:List<string>MyGeneric=newLinst<string>{"zhangsan","2016000234","工程機械1601"};11.1LINQ的概念11.1.2與LINQ相關(guān)的幾個概念3.擴展方法使用擴展方法可以為一些現(xiàn)有的類增加某種特定的功能。也就是向一個現(xiàn)有的類中添加新的靜態(tài)方法(注意必須是靜態(tài)的)。創(chuàng)建擴展方法的語法格式如下所示:publicstaticclass靜態(tài)類名稱{publicstatic返回值類型方法名稱(this作用類型形參1[,形參2]……){擴展方法的方法體語句}}11.1LINQ的概念11.1.2與LINQ相關(guān)的幾個概念4.Lambda表達(dá)式
Lambda表達(dá)式是.NETFramework3.5的一個新特性,它提供了一種極為簡潔的定義方法的方式。它是從.NETFramework1.0中的“委托”和.NETFramework2.0中的“匿名方法”過渡而來的。(1)委托:委托實際上是一個函數(shù)指針,將問題的處理指向一個方法。(2)匿名方法:在實際應(yīng)用中被調(diào)用方法的具體名稱無關(guān)緊要,關(guān)鍵是方法體的返回值。所以在.NETFramework2.0中引入了“匿名方法”的概念。如下列代碼所示,使用匿名方法無需首先創(chuàng)建方法,而是將方法體語句直接書寫到委托實例化語句中,并用大括號將其括起來
11.1LINQ的概念11.1.2與LINQ相關(guān)的幾個概念4.Lambda表達(dá)式
(3)過渡到Lambda表達(dá)式
Lambda表達(dá)式是一個匿名函數(shù),它可以包含表達(dá)式和語句塊??捎糜趧?chuàng)建委托或表達(dá)式目錄樹類型。所有Lambda表達(dá)式都使用Lambda運算符“=>”,該運算符讀為“goesto”。該運算符的左邊是輸入?yún)?shù)(如果有的話),右邊包含表達(dá)式或語句塊。11.1LINQ的概念11.1.2與LINQ相關(guān)的幾個概念5.對象關(guān)系設(shè)計器對象關(guān)系設(shè)計器也稱為O/R設(shè)計器,用來自動生成與數(shù)據(jù)庫表對應(yīng)的DataConText類。DataConText類是LINQtoSQL框架的主入口點,所有實體對象與關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)的轉(zhuǎn)換就是依靠DataConText類來完成的。創(chuàng)建DataConText類可以通過手工的方法,也可以使用O/R設(shè)計器自動完成。當(dāng)我們向ASP.NET網(wǎng)站中添加一個“LINQtoSQL類”時,系統(tǒng)將自動打開O/R設(shè)計器。從服務(wù)器資源管理器窗口中,將數(shù)據(jù)庫表、存儲過程等拖動到O/R設(shè)計器中,即可自動生成需要的DataConText類或方法。11.2使用LinqDataSource控件11.2.1創(chuàng)建DataContext類5.對象關(guān)系設(shè)計器1)添加一個LINQtoSQL類的新項2)屏幕自動切換到O/R設(shè)計器窗口3)數(shù)據(jù)表從服務(wù)器資源管理器中拖動到O/R設(shè)計器的左窗格11.2使用LinqDataSource控件11.2.2配置LinqDataSource使用LinqDataSource配置向?qū)А?1.2使用LinqDataSource控件11.2.3LinqDataSource控件使用示例本節(jié)將以一個實例說明使用LinqDataSource控件配合FormView控件現(xiàn)實常規(guī)數(shù)據(jù)庫操作的方法。
參閱源代碼:ex11-211.3使用LINQtoSQL的對象和方法11.3.1返回數(shù)據(jù)表中的全部記錄(select語句)1.返回全部記錄的全部列下面的代碼說明了在此基礎(chǔ)上如何使用LINQtoSQL返回數(shù)據(jù)表StudentInfo中所有數(shù)據(jù)的方法。protectedvoidButton1_Click(objectsender,EventArgse){DataClassesDataContext
db=new
DataClassesDataContext();
var
Stuinfo=fromStuTablein
db.StudentInfoselectStuTable;GridView1.DataSource=Stuinfo;GridView1.DataBind();}11.3使用LINQtoSQL的對象和方法11.3.1返回數(shù)據(jù)表中的全部記錄(select語句)2.返回全部記錄的部分字段如果希望只返回全部記錄的部分字段值(例如,只返回“學(xué)號”studentID和“電子郵件”Email),可將select子句改為如下內(nèi)容。其中,new{StuTable.StudentID,StuTable.Email}語句創(chuàng)建了一個包含了2個屬性的新匿名類型。selectnew{StuTable.StudentID,StuTable.Email};11.3使用LINQtoSQL的對象和方法11.3.1返回數(shù)據(jù)表中的全部記錄(select語句)3.返回某條記錄的某個字段值下列語句表示了從查詢結(jié)構(gòu)中取出某行某列值的方法。語句使用ToList()方法,將sinfo轉(zhuǎn)換成List<>泛型集合后,取出其中的字段值,即將查詢結(jié)果中第一條記錄的StudentID字段值顯示到標(biāo)簽控件中。protectedvoidButton1_Click(objectsender,EventArgse){DataClassesDataContext
db=new
DataClassesDataContext();
var
StuInfo=fromStuTableindb.StudentInfoselectStuTable;Label1.Text=StuInfo.ToList()[0].StudentID;}11.3使用LINQtoSQL的對象和方法11.3.1返回數(shù)據(jù)表中的全部記錄(select語句)4.遍歷某字段的全部值下列代碼表示了使用foreach循環(huán)遍歷studentID字段,并將該字段的所有值添加到列表框控件ListBox1中的方法。protectedvoidButton1_Click(objectsender,EventArgse){
DataClassesDataContext
db=newDataClassesDataContext();
foreach(varsindb.StudentInfo){
ListBox1.Items.Add(s.StudentID);}}11.3使用LINQtoSQL的對象和方法11.3.2返回數(shù)據(jù)表中符合條件的部分記錄(Where語句)使用Where語句下列語句(斜體字部分)通過Where語句設(shè)置了條件表達(dá)式,篩選出專業(yè)為“軟件技術(shù)”,且“1991-02-01”前出生的所有記錄。protectedvoidLinqWhere_Click(objectsender,EventArgse){
DataClassesDataContext
db=newDataClassesDataContext();
var
StuInfo=fromStuTableindb.StudentInfo
whereStuTable.Specialty=="軟件技術(shù)"&&
StuTable.DateOfBirth<DateTime.Parse("1991-02-01")selectStuTable;GridView1.DataSource=StuInfo;GridView1.DataBind();}11.3使用LINQtoSQL的對象和方法11.3.2返回數(shù)據(jù)表中符合條件的部分記錄(Where語句)2.使用Where()方法通常將上面代碼的編寫方式稱為“語句方式”,將使用Lambda表達(dá)式的編寫方式稱為“方法方式”,實現(xiàn)程序功能的方法方式代碼如下所示。代碼中斜體字部分使用db.StudentInfo對象的Where()方法,并使用Lambda表達(dá)式表示了查詢條件。程序的返回結(jié)果與上例完全相同。protectedvoidLinqWhere_Click(objectsender,EventArgse){
DataClassesDataContext
db=newDataClassesDataContext();
var
StuInfo=db.StudentInfo.Where(m=>m.Specialty=="軟件技術(shù)"&&
m.DateOfBirth<DateTime.Parse("1991-02-01"));GridView1.DataSource=StuInfo;GridView1.DataBind();}11.3使用LINQtoSQL的對象和方法11.3.2返回數(shù)據(jù)表中符合條件的部分記錄(Where語句)3.Single()和SingleOrDefault()方法如果希望從數(shù)據(jù)庫中返回單獨的一條記錄,可使用Single()或SingleOrDefault()方法。其中:1)Single()方法:用于返回符合條件的單獨一條記錄,在沒有找到任何匹配記錄時將拋出一個異常。2)SingleOrDefault()方法:用于返回符合條件的單獨一條記錄,在沒有找到任何匹配的記錄時將返回null。11.3使用LINQtoSQL的對象和方法11.3.2返回數(shù)據(jù)表中符合條件的部分記錄(Where語句)4.返回字段值包含特定字符串的記錄可以在LINQtoSQL查詢中使用的字符串方法有許多,如:Length、Substring、Contains、StartsWith、EndsWith、IndexOf等等。11.3使用LINQtoSQL的對象和方法11.3.3返回數(shù)據(jù)集合的排序(OrderBy方法)使用OrdreBy()方法或OrderByDescending()方法,可以實現(xiàn)返回記錄的升序或降序排列。protectedvoidLinqOrderBy_Click(objectsender,EventArgse){
DataClassesDataContext
db=new
DataClassesDataContext();GridView1.DataSource=db.StudentInfo.OrderBy(m=>m.DateOfBirth);GridView1.DataBind();}11.3使用LINQtoSQL的對象和方法11.3.4連接不同數(shù)據(jù)表(Join語句)如果希望將數(shù)據(jù)庫中不同表的字段組成一個來自多個表的查詢返回集合,需要使用LINQtoSQL提供的Join語句。
參閱源代碼:ex11-311.3使用LINQtoSQL的對象和方法11.3.5插入新記錄使用LINQtoSQL向數(shù)據(jù)表中插入一條記錄的方法十分簡單,在創(chuàng)建了DataContext類和數(shù)據(jù)表實體對象后,只要創(chuàng)建一個數(shù)據(jù)表對象的實例,并為該實例的各個字段賦值,最后調(diào)用數(shù)據(jù)表對象的InsertOnSubmit()方法,將數(shù)據(jù)表對象實例添加到表,調(diào)用DataContext類對象的SubmitChanges()更新數(shù)據(jù)庫即可。11.3使用LINQtoSQL的對象和方法11.3.6修改記錄使用LINQtoSQL技術(shù)修改數(shù)據(jù)庫記錄的操作與添加新記錄十分相似,在創(chuàng)建了DataContext類和數(shù)據(jù)表實體對象后,首先需要查詢到希望修改的記錄,而后為查詢結(jié)果對象中的各個字段賦以新值,最后調(diào)用DataContext類對象的SubmitChanges()方法即可。11.3使用LINQtoSQL的對象和方法11.3.7刪除記錄使用LINQtoSQL技術(shù)刪除數(shù)據(jù)庫記錄的操作與更新記錄十分相似,在創(chuàng)建了DataContext類和數(shù)據(jù)表實體對象后,首先需要查詢到希望修改的記錄,而后調(diào)用數(shù)據(jù)表實體對象的DeleteOnSubmit()方法,最后調(diào)用DataContext類對象的SubmitChanges()方法即可。11.3使用LINQtoSQL的對象和方法11.3.8使用LINQtoSQL直接執(zhí)行SQL語句
1.GetCommand()方法
2.ExecuteCommand()方法
DataContext類提供的ExecuteCommand()方法可用于直接對數(shù)據(jù)庫執(zhí)行一個沒有返回值的SQL命令。注意,在書寫SQL語句時表名稱、字段名需要用方括號“[]”將其括起來。
3.ExecuteQuery()方法
DataContext類提供的ExecuteQuery()方法用于直接執(zhí)行一個SQL查詢,該方法返回一個IEnumerable<T>類型的泛型集合。11.4實訓(xùn)使用LINQtoSQL操作數(shù)據(jù)庫11.4.1實訓(xùn)目的①進(jìn)一步理解創(chuàng)建和使用DataContext類的基本方法。②掌握常用LINQtoSQL語句和方法,掌握通過LINQtoSQL語句或方法實現(xiàn)常規(guī)數(shù)據(jù)庫操作的基本步驟。11.4.2實訓(xùn)要求使用LINQtoSQL語句和方法,配合GridView、LinqDataSource等控件,設(shè)計一個能對SQLServer數(shù)據(jù)庫StudentDB中StudentInfo表進(jìn)行查詢、添加、修改或刪除操作的ASP.NET應(yīng)用程序。第12章ASP.NETMVC本章講述的主要內(nèi)容12.1ASP.NETMVC概述12.2ASP.NETMVC路由12.3ASP.NETMVC控制器12.4ASP.NETMVC視圖和模型12.5實訓(xùn)設(shè)計一個用戶管理程序
12.1ASP.NETMVC概述ASP.NETMVC是Microsoft推出的新型ASP.NET應(yīng)用程序開發(fā)模式,MVC是模型(Model)、視圖(View)和控制器(Controller)3個單詞的縮寫,它意味著這種開發(fā)模式將一個應(yīng)用程序分為模型、視圖和控制器3個組成部分。VisualStudio2015中內(nèi)置的MVC版本為ASP.NETMVC5。12.1.1MVC的構(gòu)成1.模型(Model)2.視圖(View)3.控制器(Controller)12.1ASP.NETMVC概述12.1.1MVC的構(gòu)成4.MVC的工作原理12.1ASP.NETMVC概述12.1.2Razor語法
ASP.NETMVC5默認(rèn)使用Razor語法來設(shè)計動態(tài)網(wǎng)頁。由于Razor是通過System.Web.Mvc下的RazorViewEngine類來實現(xiàn)的,所以也稱為“Razor視圖引擎”。在ASP.NETMVC5項目中使用的Razor視圖引擎為基于Razor語法的Web網(wǎng)頁第3版(也稱為ASP.NETWebPages3)。Razor的特點①利用Razor可以在視圖(.cshtml)文件中混合使用C#和HTML、JavaScript、jQuery等服務(wù)器端和客戶端語言。②Razor有非常簡潔的語法格式。在視圖文件中只需要使用一個“@”符號就可以表示C#語句塊或內(nèi)聯(lián)表達(dá)式。③Razor能自動對網(wǎng)頁中輸入的字符串進(jìn)行HTML編碼,可以有效地防范客戶端腳本攻擊。12.1ASP.NETMVC概述12.1.2Razor語法2.使用Razor
(1)使用@標(biāo)記@標(biāo)記表示其后跟隨的是C#代碼的一個內(nèi)聯(lián)表達(dá)式、單行語句或一個語句塊。(2)使用@Html.Raw()方法對于HTML代碼中出現(xiàn)的@符號本身或雙引號、單引號等特殊符號,可以通過@Html.Raw()方法進(jìn)行轉(zhuǎn)義。12.1ASP.NETMVC概述12.1.3創(chuàng)建MVC應(yīng)用程序參閱源代碼:ex12-112.1.4ASP.NET
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商業(yè)地產(chǎn)租賃合同范本大全
- 2025商業(yè)店鋪轉(zhuǎn)租合同協(xié)議
- 2025醫(yī)療設(shè)備采購合同協(xié)議范本格式
- 2025合伙經(jīng)營合同
- 2025室內(nèi)設(shè)計合同范本協(xié)議
- 2025年授權(quán)轉(zhuǎn)讓合同樣本
- 2025年非淀粉類生物可降解塑料項目建議書
- 2025年利用溫度變化加工機械合作協(xié)議書
- 中學(xué)綠化施工方案
- 2024初級社會工作者職業(yè)資格筆試考試真題解析
- 腹瀉患兒的護(hù)理 腹瀉(兒童護(hù)理課件)
- 槽式太陽能光熱發(fā)電系統(tǒng)設(shè)計
- 地圖常用地物符號
- 附著式升降腳手架現(xiàn)場檢查表
- 高考理綜試題答題技巧方法!課件
- 契稅補貼申請表
- 西山煤電集團白家莊礦煤層開采初步設(shè)計
- 魯班獎迎檢分工細(xì)化
- Q∕GDW 12100-2021 電力物聯(lián)網(wǎng)感知層技術(shù)導(dǎo)則
- 最新金屬軟管設(shè)計制造新工藝新技術(shù)及性能測試實用手冊
- 渠道項目報備管理規(guī)定
評論
0/150
提交評論