Web開發(fā)實(shí)用教程 第九章_第1頁
Web開發(fā)實(shí)用教程 第九章_第2頁
Web開發(fā)實(shí)用教程 第九章_第3頁
Web開發(fā)實(shí)用教程 第九章_第4頁
Web開發(fā)實(shí)用教程 第九章_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、大連理工大學(xué)出版社大連理工大學(xué)出版社Web開發(fā)實(shí)用教程開發(fā)實(shí)用教程第第9章章 ASP.NET數(shù)據(jù)庫操作數(shù)據(jù)庫操作第第9章章 ASP.NET數(shù)據(jù)庫操作數(shù)據(jù)庫操作v本章概述本章概述 ASP.NETASP.NET數(shù)據(jù)庫應(yīng)用的開發(fā)采用功能豐富的數(shù)據(jù)庫應(yīng)用的開發(fā)采用功能豐富的ADO.NET(ActiveX Data ADO.NET(ActiveX Data Object.NET)Object.NET)技術(shù),技術(shù),ADO.NETADO.NET是是.NET.NET框架的一部分,通過它可以快捷方便的地框架的一部分,通過它可以快捷方便的地進(jìn)行數(shù)據(jù)庫訪問操作。進(jìn)行數(shù)據(jù)庫訪問操作。 本章在講解關(guān)系數(shù)據(jù)庫與本章在講解

2、關(guān)系數(shù)據(jù)庫與SQLSQL基本語句的基礎(chǔ)上,詳細(xì)講解了基本語句的基礎(chǔ)上,詳細(xì)講解了ADO.NETADO.NET中中幾個對象的使用方法及數(shù)據(jù)綁定操作。最后通過一個留言本的案例綜合演示幾個對象的使用方法及數(shù)據(jù)綁定操作。最后通過一個留言本的案例綜合演示了了ASP.NETASP.NET進(jìn)行數(shù)據(jù)庫開發(fā)的步驟以及基本方法。進(jìn)行數(shù)據(jù)庫開發(fā)的步驟以及基本方法。第第9章章 ASP.NET數(shù)據(jù)庫操作數(shù)據(jù)庫操作v學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo) 1 1掌握掌握SQLSQL基本操作語句(基本操作語句(SELECTSELECT、INSERTINSERT、DELETEDELETE、UPDATEUPDATE)的用法;)的用法; 2 2了解了

3、解ADO.NETADO.NET的常用對象;的常用對象; 3 3能熟念使用數(shù)據(jù)綁定控件及能熟念使用數(shù)據(jù)綁定控件及C#C#編程操作數(shù)據(jù)庫。編程操作數(shù)據(jù)庫。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫與SQL概述概述1. 1. 關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫 用二維表結(jié)構(gòu)來表示實(shí)體及實(shí)體間聯(lián)系的模型稱為關(guān)系模型用二維表結(jié)構(gòu)來表示實(shí)體及實(shí)體間聯(lián)系的模型稱為關(guān)系模型(Relational (Relational Mondel)Mondel)?;??;陉P(guān)系模型關(guān)系模型建立的數(shù)據(jù)庫即稱為關(guān)系型數(shù)據(jù)庫。常用的建立的數(shù)據(jù)庫即稱為關(guān)系型數(shù)據(jù)庫。常用的ORACLEORACLE、SQL SERVERSQL SER

4、VER、ACCESSACCESS等數(shù)據(jù)庫都屬于關(guān)系型數(shù)據(jù)庫。等數(shù)據(jù)庫都屬于關(guān)系型數(shù)據(jù)庫。 在關(guān)系型數(shù)據(jù)庫的二維表結(jié)構(gòu)中,每一行稱為一條記錄,用來描述一個在關(guān)系型數(shù)據(jù)庫的二維表結(jié)構(gòu)中,每一行稱為一條記錄,用來描述一個對象的信息;每一列稱為一個字段,用來描述對象的一個屬性。對象的信息;每一列稱為一個字段,用來描述對象的一個屬性。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫與SQL概述概述1. 1. 關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu)有以下特點(diǎn):關(guān)系型數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu)有以下特點(diǎn): 數(shù)據(jù)表通常是一個由行和列組成的二維表,每一個數(shù)據(jù)表分別說明數(shù)據(jù)數(shù)據(jù)表通常是一個由行和列組成的二維表,

5、每一個數(shù)據(jù)表分別說明數(shù)據(jù)庫中某一特定的方面或部分的對象及其屬性。庫中某一特定的方面或部分的對象及其屬性。 數(shù)據(jù)表中的行通常叫做記錄或元組,它代表眾多具有相同屬性的對象中的數(shù)據(jù)表中的行通常叫做記錄或元組,它代表眾多具有相同屬性的對象中的一個一個。 數(shù)據(jù)表中的列通常叫做字段或?qū)傩?,它代表相?yīng)數(shù)據(jù)庫中存儲對象的共有數(shù)據(jù)表中的列通常叫做字段或?qū)傩裕硐鄳?yīng)數(shù)據(jù)庫中存儲對象的共有屬性。屬性。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫與SQL概述概述1. 1. 關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫 關(guān)系型數(shù)據(jù)庫數(shù)據(jù)表之間的關(guān)聯(lián)實(shí)際上是通過關(guān)系型數(shù)據(jù)庫數(shù)據(jù)表之間的關(guān)聯(lián)實(shí)際上是通過鍵鍵(KeyKey)來實(shí)現(xiàn)的

6、。所)來實(shí)現(xiàn)的。所謂的謂的“鍵鍵”是指數(shù)據(jù)表的一個字段,鍵分為主鍵(是指數(shù)據(jù)表的一個字段,鍵分為主鍵(Primary KeyPrimary Key)和外鍵)和外鍵(Foreign KeyForeign Key)兩種,它們都在數(shù)據(jù)表連接的過程中起著重大的作用。)兩種,它們都在數(shù)據(jù)表連接的過程中起著重大的作用。 主鍵主鍵(Primary KeyPrimary Key):是數(shù)據(jù)表中具有唯一性的字段,也就是說數(shù)據(jù)表):是數(shù)據(jù)表中具有唯一性的字段,也就是說數(shù)據(jù)表中任意兩條記錄都不可能擁有相同的主鍵字段。中任意兩條記錄都不可能擁有相同的主鍵字段。 外鍵外鍵(Foreign KeyForeign Key):

7、一個數(shù)據(jù)表將使用該數(shù)據(jù)表中的外鍵連接到其他):一個數(shù)據(jù)表將使用該數(shù)據(jù)表中的外鍵連接到其他的數(shù)據(jù)表,而這個外鍵字段在其他的數(shù)據(jù)表中將作為主鍵字段出現(xiàn)。的數(shù)據(jù)表,而這個外鍵字段在其他的數(shù)據(jù)表中將作為主鍵字段出現(xiàn)。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫與SQL概述概述2.2. SQLSQL概述概述 SQL SQL是是Structured Query Language(Structured Query Language(結(jié)化查詢語言)的縮寫,它包括結(jié)化查詢語言)的縮寫,它包括定義定義、查詢查詢、操縱操縱和和控制控制關(guān)系數(shù)據(jù)庫四個部分,是一種功能強(qiáng)大、使用方便的數(shù)據(jù)關(guān)系數(shù)據(jù)庫四個部分,

8、是一種功能強(qiáng)大、使用方便的數(shù)據(jù)庫語言。由于庫語言。由于SQLSQL接近于英語自然語言,簡潔易學(xué),功能豐富,使用靈活,受接近于英語自然語言,簡潔易學(xué),功能豐富,使用靈活,受到廣泛的支持。經(jīng)不斷發(fā)展完善和擴(kuò)充,到廣泛的支持。經(jīng)不斷發(fā)展完善和擴(kuò)充,19861986年年1010月月SQLSQL被美國國家標(biāo)準(zhǔn)局被美國國家標(biāo)準(zhǔn)局(ANSI)(ANSI)確定為關(guān)系型數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn),確定為關(guān)系型數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn),19871987年年6 6月月SQLSQL又被國際標(biāo)準(zhǔn)化又被國際標(biāo)準(zhǔn)化組織組織(ISO)(ISO)采納為關(guān)系型數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)。目前,所有生產(chǎn)廠商的數(shù)據(jù)采納為關(guān)系型數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn)。

9、目前,所有生產(chǎn)廠商的數(shù)據(jù)庫管理系統(tǒng)都支持庫管理系統(tǒng)都支持SQLSQL,比如,比如SQL ServerSQL Server、DB2DB2、ORACLEORACLE、SybaseSybase、InformixInformix等。等。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫與SQL概述概述2.2. SQLSQL概述概述 與與C C、JAVAJAVA等強(qiáng)調(diào)流程控制與函數(shù)功能的程序設(shè)計語言不同,等強(qiáng)調(diào)流程控制與函數(shù)功能的程序設(shè)計語言不同,SQLSQL強(qiáng)調(diào)的強(qiáng)調(diào)的不是強(qiáng)大的程序結(jié)構(gòu)和自定義函數(shù)等功能,它是一門不是強(qiáng)大的程序結(jié)構(gòu)和自定義函數(shù)等功能,它是一門數(shù)據(jù)庫操縱數(shù)據(jù)庫操縱語言。語言。SQ

10、LSQL的的功能主要包括以下幾部分:功能主要包括以下幾部分: DMLDML(Data Manipulation LanguageData Manipulation Language,數(shù)據(jù)操作語言):用于檢索或者,數(shù)據(jù)操作語言):用于檢索或者修改數(shù)據(jù)修改數(shù)據(jù) DDLDDL(Data Definition LanguageData Definition Language,數(shù)據(jù)定義語言):,數(shù)據(jù)定義語言): 用于定義數(shù)據(jù)的用于定義數(shù)據(jù)的結(jié)構(gòu),比如結(jié)構(gòu),比如 創(chuàng)建、修改或者刪除數(shù)據(jù)庫對象創(chuàng)建、修改或者刪除數(shù)據(jù)庫對象 DCLDCL(Data Control LanguageData Control La

11、nguage,數(shù)據(jù)控制語言):用于定義數(shù)據(jù)庫用戶,數(shù)據(jù)控制語言):用于定義數(shù)據(jù)庫用戶的權(quán)限的權(quán)限9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫與SQL概述概述2.2. SQLSQL概述概述DML命令語句及功能說明命令語句及功能說明 語語 句句說說 明明SELECTSELECT用于查詢數(shù)據(jù)庫中的數(shù)據(jù)用于查詢數(shù)據(jù)庫中的數(shù)據(jù)INSERTINSERT用于增加數(shù)據(jù)到數(shù)據(jù)庫用于增加數(shù)據(jù)到數(shù)據(jù)庫UPDATEUPDATE用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù)用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù)DELETEDELETE用于從數(shù)據(jù)庫中刪除數(shù)據(jù)用于從數(shù)據(jù)庫中刪除數(shù)據(jù)9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫與

12、SQL概述概述2.2. SQLSQL概述概述DML命令語句及功能說明命令語句及功能說明 語語 句句說說 明明CREATE TABLECREATE TABLE用于創(chuàng)建表結(jié)構(gòu)用于創(chuàng)建表結(jié)構(gòu)ALTER TABLEALTER TABLE用于修改表結(jié)構(gòu)用于修改表結(jié)構(gòu)DROP TABLEDROP TABLE用于從數(shù)據(jù)庫中刪除表用于從數(shù)據(jù)庫中刪除表CREATE INDEXCREATE INDEX創(chuàng)建表的索引創(chuàng)建表的索引DROP INDEXDROP INDEX刪除表的索引刪除表的索引9.1 SQL基礎(chǔ)基礎(chǔ)9.1.2 SELECT SELECT SELECT語句是語句是SQLSQL中中DMLDML語句命令最核心

13、、功能最強(qiáng)大的語句。在數(shù)據(jù)庫語句命令最核心、功能最強(qiáng)大的語句。在數(shù)據(jù)庫應(yīng)用中,最常用的操作就是應(yīng)用中,最常用的操作就是查詢查詢。SELECTSELECT語句與各類語句與各類SQLSQL子句結(jié)合可以完成各子句結(jié)合可以完成各類復(fù)雜的查詢操作。類復(fù)雜的查詢操作。 SELECT SELECT語句用于查詢數(shù)據(jù)庫并檢索匹配你指定條件的選擇數(shù)據(jù)。語句用于查詢數(shù)據(jù)庫并檢索匹配你指定條件的選擇數(shù)據(jù)。SELECTSELECT語句有五個主要的子句可以選擇,而語句有五個主要的子句可以選擇,而FROMFROM是唯一必須的子句。是唯一必須的子句。其主要的子句歸納如下:其主要的子句歸納如下:SELECT ALL | DIS

14、TINCT column1,column2SELECT ALL | DISTINCT column1,column2FROM table1,table2FROM table1,table2WHERE search_conditionWHERE search_conditionGROUP BY group_by_expressionGROUP BY group_by_expressionHAVING search_conditionHAVING search_conditionORDER BY order_expression ASCORDER BY order_expression ASC |

15、 DESC9.1 SQL基礎(chǔ)基礎(chǔ)9.1.2 SELECT SELECT后指定查詢需要返回的數(shù)據(jù)表列名,默認(rèn)為后指定查詢需要返回的數(shù)據(jù)表列名,默認(rèn)為ALL關(guān)鍵字,關(guān)鍵字,DISTINCT關(guān)關(guān)鍵字的作用是在查詢結(jié)果中去掉重復(fù)的數(shù)據(jù)。鍵字的作用是在查詢結(jié)果中去掉重復(fù)的數(shù)據(jù)。FROM子句為子句為SELECT語句必須的子語句必須的子句,它指定從其中檢索數(shù)據(jù)的數(shù)據(jù)表或數(shù)據(jù)視圖,即查詢結(jié)果的來源。句,它指定從其中檢索數(shù)據(jù)的數(shù)據(jù)表或數(shù)據(jù)視圖,即查詢結(jié)果的來源。 實(shí)例實(shí)例9-1:FROM子句子句 u 查詢新聞表里的所有新聞信息的查詢新聞表里的所有新聞信息的SQL語句為:語句為: SELECT * FROM T_

16、News; (其中(其中*表示返回所有列)表示返回所有列)9.1 SQL基礎(chǔ)基礎(chǔ)9.1.2 SELECT WHERE子句指定用于限制查詢返回的數(shù)據(jù)的查詢條件。子句指定用于限制查詢返回的數(shù)據(jù)的查詢條件。 實(shí)例實(shí)例9-2:WHERE子句子句u 查詢新聞表里新聞類別查詢新聞表里新聞類別ID為為1的新聞標(biāo)題、新聞內(nèi)容和添加時間的的新聞標(biāo)題、新聞內(nèi)容和添加時間的SQL語句為:語句為: SELECT Title,Content,AddTime FROM T_News WHERE ClassID=1;實(shí)例實(shí)例9-3:GROUP BY子句與子句與HAVING子句子句 GROUP BY子句用于按指定的數(shù)據(jù)列進(jìn)行

17、分組;子句用于按指定的數(shù)據(jù)列進(jìn)行分組;HAVING子句通常與子句通常與GROUP BY子句一起使用,用于指定組或聚合的過濾條件。它們通常與子句一起使用,用于指定組或聚合的過濾條件。它們通常與SQL聚合函數(shù)一起使用。聚合函數(shù)一起使用。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.2 SELECTu 假設(shè)我們的假設(shè)我們的employee表中包含雇員的表中包含雇員的name、departmen、salary和和age。如果你想。如果你想為每個部門中每個雇員選擇平均工資,并且你還想只計算和顯示為每個部門中每個雇員選擇平均工資,并且你還想只計算和顯示salary大于大于20000的平的平均工資。均工資。 SELECT

18、dept, avg(salary) FROM employee GROUP BY dept; SELECT dept, avg(salary) FROM employee GROUP BY dept HAVING avg(salary) 20000;實(shí)例實(shí)例9-4: ORDER BY子句子句 ORDER BY子句用于對查詢的結(jié)果排序,子句用于對查詢的結(jié)果排序,ASC指定按遞增順序排序,指定按遞增順序排序,DESC指定指定按遞減順序排序。按遞減順序排序。 u 查詢新聞表中最新的新聞,以發(fā)布時間倒序排列的查詢新聞表中最新的新聞,以發(fā)布時間倒序排列的SQL語句為:語句為: SELECT * FROM

19、 T_News ORDER BY AddTime DESC;9.1 SQL基礎(chǔ)基礎(chǔ)9.1.3 INSERTINSERTINSERT語句用于為數(shù)據(jù)表語句用于為數(shù)據(jù)表增加增加一條或多條數(shù)據(jù)。它的語法格式為:一條或多條數(shù)據(jù)。它的語法格式為: INSERT INTO table_name(first_column,.last_column) INSERT INTO table_name(first_column,.last_column) VALUES(first_value,.last_value) VALUES(first_value,.last_value) 當(dāng)執(zhí)行當(dāng)執(zhí)行INSERTINSERT

20、語句時,語句時,VALUESVALUES后的數(shù)據(jù)值必須與插入表的列相匹配。包后的數(shù)據(jù)值必須與插入表的列相匹配。包括數(shù)據(jù)值的數(shù)目必須與列數(shù)相同,每個數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)括數(shù)據(jù)值的數(shù)目必須與列數(shù)相同,每個數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)也必須與相應(yīng)的列匹配,如果插入的數(shù)據(jù)與約束或規(guī)則的要求產(chǎn)生沖突或值也必須與相應(yīng)的列匹配,如果插入的數(shù)據(jù)與約束或規(guī)則的要求產(chǎn)生沖突或值的數(shù)據(jù)類型與列的數(shù)據(jù)類型不匹配,則的數(shù)據(jù)類型與列的數(shù)據(jù)類型不匹配,則INSERTINSERT執(zhí)行失敗。注意執(zhí)行失敗。注意SQLSQL中字符串中字符串必須用必須用單引號單引號括起來。括起來。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.3 I

21、NSERTu 向數(shù)據(jù)表向數(shù)據(jù)表T_News插入一條數(shù)據(jù)。插入一條數(shù)據(jù)。 INSERT INTO T_News(Title,Content,ClassId,AddTime) VALUES(國內(nèi)新聞標(biāo)題國內(nèi)新聞標(biāo)題,新聞內(nèi)容新聞內(nèi)容,1,2010-2-28);實(shí)例實(shí)例9-59.1 SQL基礎(chǔ)基礎(chǔ)9.1.4 DELETE DELETE DELETE語句的功能是從數(shù)據(jù)表中語句的功能是從數(shù)據(jù)表中刪除行刪除行,其語法格式為:,其語法格式為: DELETE FROM table_name WHERE search_conditions DELETE FROM table_name WHERE search_

22、conditions 用于從表中刪除滿足條件的行,若省略用于從表中刪除滿足條件的行,若省略WHERE子句中的條件,則表示刪子句中的條件,則表示刪除所有行。除所有行。 實(shí)例實(shí)例9-6 u 從數(shù)據(jù)表從數(shù)據(jù)表T_News中刪除新聞類別為中刪除新聞類別為1的行的行 DELETE FROM T_News WHERE ClassId=1; 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.5 UPDATEUPDATEUPDATE語句的功能是語句的功能是修改修改數(shù)據(jù)表中的數(shù)據(jù)行,其語法格式為:數(shù)據(jù)表中的數(shù)據(jù)行,其語法格式為: UPDATE table_name UPDATE table_name SET column1=exp

23、ression|DEFAULT|NULL,columnN SET column1=expression|DEFAULT|NULL,columnN WHERE search_conditions WHERE search_conditions 用于修改指定表滿足條件的行中指定列的值。需修改的列的值由用于修改指定表滿足條件的行中指定列的值。需修改的列的值由SETSET指指定,如需修改多個列,則中間用定,如需修改多個列,則中間用逗號逗號隔開。若省略隔開。若省略WHEREWHERE子句中的條件,則子句中的條件,則表示修改所有數(shù)據(jù)行中指定列的值。表示修改所有數(shù)據(jù)行中指定列的值。實(shí)例實(shí)例9-7 u 將新聞

24、表將新聞表T_NewsT_News中所有類別中所有類別IDID為為1 1的新聞的類別的新聞的類別IDID都修改為都修改為2 2: UPDATE T_News SET ClassId=2 WHERE ClassId=1 UPDATE T_News SET ClassId=2 WHERE ClassId=1;9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲過程存儲過程 存儲過程(存儲過程(Stored Procedure)是一組為了完成特定功能的)是一組為了完成特定功能的SQL語句集,語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫。用戶通過指定存儲過程的名字并給出參數(shù)(如果該經(jīng)編譯后存儲在數(shù)據(jù)庫。用戶通過指定存儲過程的名字并

25、給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。在存儲過程帶有參數(shù))來執(zhí)行它。在SQL Server的系列版本中存儲過程分為兩的系列版本中存儲過程分為兩類:類:系統(tǒng)提供的存儲過程系統(tǒng)提供的存儲過程和和用戶自定義存儲過程用戶自定義存儲過程。系統(tǒng)存儲過程主要存儲在。系統(tǒng)存儲過程主要存儲在master數(shù)據(jù)庫中并以數(shù)據(jù)庫中并以sp_為前綴,并且系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信為前綴,并且系統(tǒng)存儲過程主要是從系統(tǒng)表中獲取信息,而且當(dāng)創(chuàng)建一個新數(shù)據(jù)庫時,一些系統(tǒng)存儲過程會在新數(shù)據(jù)庫中被自動息,而且當(dāng)創(chuàng)建一個新數(shù)據(jù)庫時,一些系統(tǒng)存儲過程會在新數(shù)據(jù)庫中被自動創(chuàng)建。用戶自定義存儲過程是由用戶創(chuàng)建并能完成某一特定功

26、能(如查詢用創(chuàng)建。用戶自定義存儲過程是由用戶創(chuàng)建并能完成某一特定功能(如查詢用戶所需數(shù)據(jù)信息)的存儲過程。戶所需數(shù)據(jù)信息)的存儲過程。 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲過程存儲過程下面是下面是SQL中創(chuàng)建存儲過程的基本語法:中創(chuàng)建存儲過程的基本語法: CREATE PROC EDURE procedure_name parameter data_type = default OUTPUT ,.n AS sql_statement .n 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲過程存儲過程 存儲過程創(chuàng)建語句各參數(shù)含義說明存儲過程創(chuàng)建語句各參數(shù)含義說明 參參 數(shù)數(shù)說說 明明procedure_

27、nameprocedure_name要創(chuàng)建的存儲過程名稱,必須是當(dāng)前數(shù)據(jù)庫中唯一的要創(chuàng)建的存儲過程名稱,必須是當(dāng)前數(shù)據(jù)庫中唯一的parameterparameter存儲過程的參數(shù)。用戶必須在執(zhí)行過程時提供每個所聲存儲過程的參數(shù)。用戶必須在執(zhí)行過程時提供每個所聲明參數(shù)的值(除非定義了該參數(shù)的默認(rèn)值)。明參數(shù)的值(除非定義了該參數(shù)的默認(rèn)值)。data_typedata_type參數(shù)的數(shù)據(jù)類型,可以利用參數(shù)的數(shù)據(jù)類型,可以利用DEFAULTDEFAULT指出參數(shù)的默認(rèn)值;指出參數(shù)的默認(rèn)值;可以利用可以利用OUTPUTOUTPUT表明該參數(shù)是一個返回參數(shù)表明該參數(shù)是一個返回參數(shù)ASAS指明該存儲過程將

28、要執(zhí)行的動作指明該存儲過程將要執(zhí)行的動作sql_statementsql_statement包含在存儲過程任何數(shù)量和類型的包含在存儲過程任何數(shù)量和類型的SQLSQL語句語句9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲過程存儲過程 在在WEB開發(fā)中使用存儲過程主要有兩大好處:第一是可以開發(fā)中使用存儲過程主要有兩大好處:第一是可以加快程序執(zhí)行加快程序執(zhí)行速度速度,因為存儲過程由數(shù)據(jù)庫批量執(zhí)行,減少了對數(shù)據(jù)庫連接,并會被數(shù)據(jù),因為存儲過程由數(shù)據(jù)庫批量執(zhí)行,減少了對數(shù)據(jù)庫連接,并會被數(shù)據(jù)庫優(yōu)化。另外當(dāng)客戶端調(diào)用存儲過程時,只需要傳輸該調(diào)用語句及參數(shù),而庫優(yōu)化。另外當(dāng)客戶端調(diào)用存儲過程時,只需要傳輸該調(diào)用語句

29、及參數(shù),而不是傳輸多條不是傳輸多條SQL語句,因此減少了網(wǎng)絡(luò)傳輸流量;第二是語句,因此減少了網(wǎng)絡(luò)傳輸流量;第二是增強(qiáng)安全性增強(qiáng)安全性,開,開發(fā)人員可以對存儲過程進(jìn)行有效權(quán)限限制。另外存儲過程采用參數(shù)化的傳輸發(fā)人員可以對存儲過程進(jìn)行有效權(quán)限限制。另外存儲過程采用參數(shù)化的傳輸方式,可以有效地防止方式,可以有效地防止SQL注入式攻擊。注入式攻擊。 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲過程存儲過程實(shí)例實(shí)例9-8 u 從數(shù)據(jù)表從數(shù)據(jù)表T_News中刪除指定新聞類別的行的存儲過程中刪除指定新聞類別的行的存儲過程 CREATE PROCEDURE DelNews CREATE PROCEDURE DelN

30、ews nid int nid int AS AS DELETE FROM T_News WHERE ClassId=nid; DELETE FROM T_News WHERE ClassId=nid; GO GO9.1 SQL基礎(chǔ)基礎(chǔ)9.1.7 數(shù)據(jù)庫設(shè)計實(shí)例數(shù)據(jù)庫設(shè)計實(shí)例 數(shù)據(jù)庫設(shè)計可采用數(shù)據(jù)庫設(shè)計可采用E-R(E-R(實(shí)體實(shí)體- -聯(lián)系聯(lián)系) )分析方法,分析方法,E-RE-R分析結(jié)果直觀易懂,容分析結(jié)果直觀易懂,容易轉(zhuǎn)化為數(shù)據(jù)庫表,它的主導(dǎo)思想是使用實(shí)體(易轉(zhuǎn)化為數(shù)據(jù)庫表,它的主導(dǎo)思想是使用實(shí)體(EntityEntity)實(shí)體的屬性)實(shí)體的屬性(AttributionAttributi

31、on)以及實(shí)體之間的關(guān)系()以及實(shí)體之間的關(guān)系(RelationshipRelationship)來表示數(shù)據(jù)庫系統(tǒng))來表示數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)。的結(jié)構(gòu)。 在在E-RE-R圖方法中,使用圖方法中,使用矩形矩形表示表示實(shí)體實(shí)體,使用,使用橢圓形橢圓形表示表示屬性屬性,菱形菱形和和箭頭箭頭表示表示聯(lián)系聯(lián)系。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.7 數(shù)據(jù)庫設(shè)計實(shí)例數(shù)據(jù)庫設(shè)計實(shí)例將一名學(xué)生作為實(shí)體表示將一名學(xué)生作為實(shí)體表示 例例 在完成了在完成了E-R圖以后,就可以將圖以后,就可以將E-R圖轉(zhuǎn)換為真正的數(shù)據(jù)表結(jié)構(gòu)。圖轉(zhuǎn)換為真正的數(shù)據(jù)表結(jié)構(gòu)。在在E-R圖向數(shù)據(jù)表轉(zhuǎn)換過程中,首圖向數(shù)據(jù)表轉(zhuǎn)換過程中,首先需要將實(shí)體轉(zhuǎn)換為

32、一個獨(dú)立的數(shù)先需要將實(shí)體轉(zhuǎn)換為一個獨(dú)立的數(shù)據(jù)表,然后將實(shí)體的屬性轉(zhuǎn)換為數(shù)據(jù)表,然后將實(shí)體的屬性轉(zhuǎn)換為數(shù)據(jù)表中的字段,最后根據(jù)實(shí)體之間據(jù)表中的字段,最后根據(jù)實(shí)體之間的關(guān)系建立數(shù)據(jù)表。的關(guān)系建立數(shù)據(jù)表。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.7 數(shù)據(jù)庫設(shè)計實(shí)例數(shù)據(jù)庫設(shè)計實(shí)例學(xué)生表結(jié)構(gòu)設(shè)計學(xué)生表結(jié)構(gòu)設(shè)計字字 段段數(shù)據(jù)類型數(shù)據(jù)類型是否主鍵是否主鍵說說 明明Stu_IDStu_IDVarchar(20)Varchar(20)是是學(xué)生學(xué)號作為主鍵學(xué)生學(xué)號作為主鍵唯一標(biāo)識一名學(xué)生唯一標(biāo)識一名學(xué)生Stu_NameStu_NameVarchar(50)Varchar(50)否否學(xué)生姓名學(xué)生姓名Stu_SexStu_Sex

33、Varchar(2)Varchar(2)否否學(xué)生性別(男學(xué)生性別(男/ /女)女)Stu_ClassStu_ClassVarchar(20)Varchar(20)否否學(xué)生班級學(xué)生班級9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.1 ASP.NET數(shù)據(jù)庫訪問概述數(shù)據(jù)庫訪問概述 ASP.NET ASP.NET訪問數(shù)據(jù)庫的技術(shù)是基于訪問數(shù)據(jù)庫的技術(shù)是基于.Net Framework.Net Framework框架的框架的AD0.NETAD0.NET技術(shù),技術(shù),ADO.NET (ActiveX Data Object.NET)ADO.NET (ActiveX Data Object.NET)是是M

34、icrosoftMicrosoft公司開發(fā)的用于數(shù)據(jù)庫連公司開發(fā)的用于數(shù)據(jù)庫連接的一套組件模型,是接的一套組件模型,是ADOADO的升級版本。的升級版本。 由于由于ADO.NETADO.NET組件模型很好地融入了組件模型很好地融入了.NET Framework.NET Framework有非常好的兼容性與高有非常好的兼容性與高效性。程序員能使用效性。程序員能使用ADO.NETADO.NET組件模型,方便高效地連接和訪問數(shù)據(jù)庫。組件模型,方便高效地連接和訪問數(shù)據(jù)庫。 它是與數(shù)據(jù)庫訪問操作有關(guān)的對象模型的集合,它基于它是與數(shù)據(jù)庫訪問操作有關(guān)的對象模型的集合,它基于MicrosoftMicrosof

35、t的的.NET .NET FrameworkFramework,在很大程度上封裝了數(shù)據(jù)庫訪問和數(shù)據(jù)操作的動作。,在很大程度上封裝了數(shù)據(jù)庫訪問和數(shù)據(jù)操作的動作。9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.1 ASP.NET數(shù)據(jù)庫訪問概述數(shù)據(jù)庫訪問概述ADO.NETADO.NET同其前身同其前身ADOADO系列訪問數(shù)據(jù)庫的組件相比,做了以下兩點(diǎn)重要改進(jìn):系列訪問數(shù)據(jù)庫的組件相比,做了以下兩點(diǎn)重要改進(jìn): ADO.NET ADO.NET引入了引入了離線的數(shù)據(jù)結(jié)果集離線的數(shù)據(jù)結(jié)果集(Disconnected DataSet)(Disconnected DataSet)這個概念,通這個概念,通過使用

36、離線的數(shù)據(jù)結(jié)果集,程序員便可以在數(shù)據(jù)庫斷開的情況下訪問數(shù)據(jù)庫。過使用離線的數(shù)據(jù)結(jié)果集,程序員便可以在數(shù)據(jù)庫斷開的情況下訪問數(shù)據(jù)庫。 ADO.NET ADO.NET還提供了對還提供了對XMLXML格式文檔格式文檔的支持,所以通過的支持,所以通過ADO.NETADO.NET組件可以方便組件可以方便地在異構(gòu)環(huán)境的項目間讀取和交換數(shù)據(jù)。地在異構(gòu)環(huán)境的項目間讀取和交換數(shù)據(jù)。9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.1 ASP.NET數(shù)據(jù)庫訪問概述數(shù)據(jù)庫訪問概述 ADO.NET ADO.NET對象模型主要包括以下兩個部分:一個是對象模型主要包括以下兩個部分:一個是.NET.NET數(shù)據(jù)提供程序數(shù)據(jù)提

37、供程序,它,它能與數(shù)據(jù)源連接,并執(zhí)行針對數(shù)據(jù)源的能與數(shù)據(jù)源連接,并執(zhí)行針對數(shù)據(jù)源的SQLSQL命令,它又包括命令,它又包括ConnectionConnection對象、對象、CommandCommand對象、對象、DataReaderDataReader對象和對象和DataAdapterDataAdapter對象對象4 4部分。常用的部分。常用的.NET.NET數(shù)據(jù)數(shù)據(jù)提供程序有三種,即提供程序有三種,即SQL SERVERSQL SERVER數(shù)據(jù)提供程序、數(shù)據(jù)提供程序、OLE DBOLE DB數(shù)據(jù)源提供程序及數(shù)據(jù)源提供程序及ODBCODBC兼容數(shù)據(jù)源提供程序,所有數(shù)據(jù)提供程序都在兼容數(shù)據(jù)源提

38、供程序,所有數(shù)據(jù)提供程序都在System.DataSystem.Data命名空間中;命名空間中;另一個是另一個是數(shù)據(jù)集數(shù)據(jù)集(DataSetDataSet),與數(shù)據(jù)源分離且不需要知道所保持?jǐn)?shù)據(jù)的來),與數(shù)據(jù)源分離且不需要知道所保持?jǐn)?shù)據(jù)的來源,將數(shù)據(jù)保存在內(nèi)存中。源,將數(shù)據(jù)保存在內(nèi)存中。9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NET ADO.NET(ActiveX Data Objects.NET) ADO.NET(ActiveX Data Objects.NET)是是.NET Framework.NET Framework的重要組成部分,的重要組成部分,ASP.NETAS

39、P.NET使用使用ADO.NETADO.NET可以快捷地訪問數(shù)據(jù)庫??梢钥旖莸卦L問數(shù)據(jù)庫。 A A利用利用ADO.NETADO.NET進(jìn)行數(shù)據(jù)庫操作的一般流程是:進(jìn)行數(shù)據(jù)庫操作的一般流程是: 第一步第一步:創(chuàng)建數(shù)據(jù)庫;:創(chuàng)建數(shù)據(jù)庫; 第二步第二步:使用:使用ConnectionConnection對象創(chuàng)建到數(shù)據(jù)庫的鏈接;對象創(chuàng)建到數(shù)據(jù)庫的鏈接; 第三步第三步:操作數(shù)據(jù)庫,包括:操作數(shù)據(jù)庫,包括(1)(1)使用使用CommandCommand對象對數(shù)據(jù)源執(zhí)行對象對數(shù)據(jù)源執(zhí)行SQLSQL命令或命令或存儲過程并返回數(shù)據(jù);存儲過程并返回數(shù)據(jù);(2)(2)利用利用DataReaderDataReader

40、對象或?qū)ο蠡駾ataSetDataSet對象讀取和處理返回對象讀取和處理返回的數(shù)據(jù);的數(shù)據(jù); 第四步第四步:關(guān)閉數(shù)據(jù)庫連接,釋放資源。:關(guān)閉數(shù)據(jù)庫連接,釋放資源。9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NET Connection對象用來創(chuàng)建到數(shù)據(jù)庫的鏈接,它的對象用來創(chuàng)建到數(shù)據(jù)庫的鏈接,它的ConnectionString屬性常用屬性常用參數(shù)及說明見下表。參數(shù)及說明見下表。 1.數(shù)據(jù)庫連接對象數(shù)據(jù)庫連接對象Connection 參參 數(shù)數(shù)說說 明明Data SourceData Source要連接到的要連接到的SQL ServerSQL Server數(shù)據(jù)庫服務(wù)器名稱或者

41、數(shù)據(jù)庫服務(wù)器名稱或者IPIP地址地址Initial CatalogInitial Catalog設(shè)置要連接的數(shù)據(jù)庫名稱設(shè)置要連接的數(shù)據(jù)庫名稱User IDUser ID訪問訪問SQL ServerSQL Server數(shù)據(jù)庫的帳號數(shù)據(jù)庫的帳號PasswordPassword訪問訪問SQL ServerSQL Server數(shù)據(jù)庫的密碼數(shù)據(jù)庫的密碼9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NETConnectionConnection對象的常用方法主要有:對象的常用方法主要有:v Open()Open()方法方法: :打開數(shù)據(jù)庫連接,打開數(shù)據(jù)庫連接,ConnectionStrin

42、gConnectionString屬性只是設(shè)置了數(shù)據(jù)庫屬性只是設(shè)置了數(shù)據(jù)庫訪問的鏈接字符串,并沒有打開數(shù)據(jù)庫,必須通過此方法來打開。訪問的鏈接字符串,并沒有打開數(shù)據(jù)庫,必須通過此方法來打開。v Close()Close()方法方法:關(guān)閉數(shù)據(jù)庫,數(shù)據(jù)源使用完后必須關(guān)閉數(shù)據(jù)庫連接,以釋:關(guān)閉數(shù)據(jù)庫,數(shù)據(jù)源使用完后必須關(guān)閉數(shù)據(jù)庫連接,以釋放內(nèi)存資源。放內(nèi)存資源。1.數(shù)據(jù)庫連接對象數(shù)據(jù)庫連接對象Connection 數(shù)據(jù)庫連接的創(chuàng)建方法為:數(shù)據(jù)庫連接的創(chuàng)建方法為: SqlConnection cn=new SqlConnection( SqlConnection cn=new SqlConnectio

43、n(數(shù)據(jù)庫連接字符串?dāng)?shù)據(jù)庫連接字符串);); cn.Open(); cn.Open(); cn.Close(); cn.Close();9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NET Command Command對象的對象的ExecuteExecute方法可以執(zhí)行方法可以執(zhí)行SQLSQL指令并返回數(shù)據(jù)。其創(chuàng)建方法為:指令并返回數(shù)據(jù)。其創(chuàng)建方法為: SqlCommand cmd=new SqlCommand(cmdText,connection); SqlCommand cmd=new SqlCommand(cmdText,connection); 其中其中cmdText

44、cmdText指定要執(zhí)行的指定要執(zhí)行的SQLSQL命令語句,命令語句,connectionconnection為數(shù)據(jù)庫連接對象。這兩為數(shù)據(jù)庫連接對象。這兩個參數(shù)在創(chuàng)建的時候也可以省略,創(chuàng)建之后再通過個參數(shù)在創(chuàng)建的時候也可以省略,創(chuàng)建之后再通過SqlCommandSqlCommand對象的對象的CommandTextCommandText屬性設(shè)置屬性設(shè)置SQLSQL命令語句、命令語句、ConnectionConnection屬性設(shè)置數(shù)據(jù)庫連接對象。屬性設(shè)置數(shù)據(jù)庫連接對象。2. SQL命令執(zhí)行器對象命令執(zhí)行器對象Command 9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NETC

45、ommandCommand對象的方法常用的主要有以下幾個:對象的方法常用的主要有以下幾個:v Cancel()Cancel(): :取消執(zhí)行取消執(zhí)行CommandCommand對象;對象;v ExecuteReader()ExecuteReader(): :執(zhí)行執(zhí)行CommandTextCommandText屬性中的屬性中的SQLSQL語句并創(chuàng)建語句并創(chuàng)建DataReaderDataReader對象,對象,返回數(shù)據(jù)集合存儲于返回數(shù)據(jù)集合存儲于DataReaderDataReader對象中;對象中;v ExecuteScalar()ExecuteScalar(): :執(zhí)行執(zhí)行CommandTex

46、tCommandText屬性設(shè)置的屬性設(shè)置的SQLSQL語句并返回首行首列的數(shù)據(jù),語句并返回首行首列的數(shù)據(jù),此方法常用于執(zhí)行此方法常用于執(zhí)行SelectSelect命令需返回單個數(shù)據(jù)的情況;命令需返回單個數(shù)據(jù)的情況;v ExecuteNonQuery()ExecuteNonQuery():執(zhí)行執(zhí)行CommandText屬性設(shè)置的屬性設(shè)置的SQL語句只返回影響的數(shù)語句只返回影響的數(shù)據(jù)行數(shù),此方法常用于執(zhí)行據(jù)行數(shù),此方法常用于執(zhí)行Update、Insert、Delete等數(shù)據(jù)更新插入刪除操作。等數(shù)據(jù)更新插入刪除操作。 2. SQL命令執(zhí)行器對象命令執(zhí)行器對象Command 9.2 ASP.NET操

47、作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NET DataReader DataReader對象數(shù)據(jù)讀取的特點(diǎn)是能夠?qū)ο髷?shù)據(jù)讀取的特點(diǎn)是能夠快速快速、向前向前、只讀只讀地訪問數(shù)據(jù)源,地訪問數(shù)據(jù)源,每次在內(nèi)存中就處理一條數(shù)據(jù),因此使用每次在內(nèi)存中就處理一條數(shù)據(jù),因此使用DataReaderDataReader提高應(yīng)用程序的性能,提高應(yīng)用程序的性能,減少系統(tǒng)的開銷。減少系統(tǒng)的開銷。3.數(shù)據(jù)讀取器對象數(shù)據(jù)讀取器對象DataReader DataReader DataReader的創(chuàng)建方法為:的創(chuàng)建方法為: SqlDataReader sdr=cmd.ExecuteReader();cmd SqlData

48、Reader sdr=cmd.ExecuteReader();cmd為為CommandCommand對象。對象。 DataReader DataReader常用的屬性有常用的屬性有IsClosedIsClosed,用來判斷,用來判斷DataReaderDataReader是否處于關(guān)閉是否處于關(guān)閉狀態(tài),狀態(tài),TrueTrue表示關(guān)閉狀態(tài),反之為打開狀態(tài)。表示關(guān)閉狀態(tài),反之為打開狀態(tài)。9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NETDataReaderDataReader常用的方法有:常用的方法有:v Close()Close(): :關(guān)閉關(guān)閉DataReaderDataRea

49、der對象,用完之后一定要關(guān)閉,節(jié)省資源;對象,用完之后一定要關(guān)閉,節(jié)省資源;v GetValue(int)GetValue(int): :獲取第獲取第int+1int+1列的內(nèi)容;列的內(nèi)容;v Read()Read(): :讀取下一條數(shù)據(jù)并返回布爾值,讀取下一條數(shù)據(jù)并返回布爾值,TrueTrue表示還有下一條數(shù)據(jù),表示還有下一條數(shù)據(jù),F(xiàn)alseFalse表示沒有下一條數(shù)據(jù)。表示沒有下一條數(shù)據(jù)。3.數(shù)據(jù)讀取器對象數(shù)據(jù)讀取器對象DataReader9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NET DataSet是是ADO.NET的核心組成部分,它通過的核心組成部分,它通過Da

50、taAdapter對象來訪問數(shù)據(jù)庫,對象來訪問數(shù)據(jù)庫,它使用它使用無連接模式無連接模式訪問數(shù)據(jù)庫,數(shù)據(jù)集訪問數(shù)據(jù)庫,數(shù)據(jù)集DataSet通過數(shù)據(jù)適配器通過數(shù)據(jù)適配器DataAdapter將數(shù)將數(shù)據(jù)庫表映射到內(nèi)存中,數(shù)據(jù)一旦從數(shù)據(jù)庫讀取進(jìn)據(jù)庫表映射到內(nèi)存中,數(shù)據(jù)一旦從數(shù)據(jù)庫讀取進(jìn)DataSet便自動斷開連接,結(jié)束對便自動斷開連接,結(jié)束對數(shù)據(jù)庫的鎖定。數(shù)據(jù)庫的鎖定。 4.數(shù)據(jù)集對象數(shù)據(jù)集對象DataSet 避免多個用戶對數(shù)據(jù)庫的爭奪,其訪問數(shù)據(jù)庫的步驟如下:避免多個用戶對數(shù)據(jù)庫的爭奪,其訪問數(shù)據(jù)庫的步驟如下: 第一步第一步:使用:使用Connection對象創(chuàng)建連接;對象創(chuàng)建連接; 第二步第二步:

51、使用:使用DataAdapter對象執(zhí)行對象執(zhí)行SQL命令并返回數(shù)據(jù)集;命令并返回數(shù)據(jù)集; 第三步第三步:使用:使用DataSet處理返回的數(shù)據(jù)集結(jié)果。處理返回的數(shù)據(jù)集結(jié)果。9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NETDataSetDataSet對象由三個集合組成即對象由三個集合組成即TablesTables、RelationsRelations和和ExtendedPeopertiesExtendedPeoperties。4.數(shù)據(jù)集對象數(shù)據(jù)集對象DataSet Tables集合集合:DataSet.Tables屬性是一個屬性是一個DataTableCollection對

52、象,包含對象,包含0個個或多個或多個DataTable對象,分別對應(yīng)數(shù)據(jù)源的一個數(shù)據(jù)表。對象,分別對應(yīng)數(shù)據(jù)源的一個數(shù)據(jù)表。 DataAdapter對象是與對象是與DataSet配合使用用來執(zhí)行配合使用用來執(zhí)行SQL命令的對象,它負(fù)責(zé)命令的對象,它負(fù)責(zé)處理數(shù)據(jù)源格式與處理數(shù)據(jù)源格式與DataSet使用格式之間的轉(zhuǎn)換。它通過使用格式之間的轉(zhuǎn)換。它通過Fill方法把數(shù)據(jù)源中的表方法把數(shù)據(jù)源中的表填充到填充到DataSet對象中,在對數(shù)據(jù)完成添加、刪除、或修改操作后再調(diào)用對象中,在對數(shù)據(jù)完成添加、刪除、或修改操作后再調(diào)用Update方法更新數(shù)據(jù)源。它的創(chuàng)建方法如下:方法更新數(shù)據(jù)源。它的創(chuàng)建方法如下:

53、SqlDataAdapter sda=new SqlDataAdapter();9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NETDataAdapter對象常用屬性及說明對象常用屬性及說明 4.數(shù)據(jù)集對象數(shù)據(jù)集對象DataSet 屬屬 性性說說 明明InsertCommandInsertCommand獲取或設(shè)置用來從數(shù)據(jù)庫插入數(shù)據(jù)的獲取或設(shè)置用來從數(shù)據(jù)庫插入數(shù)據(jù)的SQLSQL命令命令DeleteCommandDeleteCommand獲取或設(shè)置用來從數(shù)據(jù)庫刪除數(shù)據(jù)的獲取或設(shè)置用來從數(shù)據(jù)庫刪除數(shù)據(jù)的SQLSQL命令命令SelectCommandSelectCommand獲取或設(shè)

54、置用來從數(shù)據(jù)庫選取數(shù)據(jù)的獲取或設(shè)置用來從數(shù)據(jù)庫選取數(shù)據(jù)的SQLSQL命令命令UpdateCommandUpdateCommand獲取或設(shè)置用來從數(shù)據(jù)庫更新數(shù)據(jù)的獲取或設(shè)置用來從數(shù)據(jù)庫更新數(shù)據(jù)的SQLSQL命令命令9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.2 ADO.NETDataAdapterDataAdapter對象的常用方法如下:對象的常用方法如下:v Fill(dataset,srcTable)Fill(dataset,srcTable): :將將SelectCommandSelectCommand屬性指定的屬性指定的SQLSQL命令返回的結(jié)果填命令返回的結(jié)果填充至充至DataS

55、etDataSet的的TablesTables集合中,參數(shù)集合中,參數(shù)datasetdataset為要填充的為要填充的DataSetDataSet對象,參數(shù)對象,參數(shù)srcTablesrcTable指定數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)來源表的名稱。指定數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)來源表的名稱。v Update(dataset,srcTable) Update(dataset,srcTable): :調(diào)用調(diào)用InsertCommandInsertCommand、DeleteCommandDeleteCommand、UpdateCommandUpdateCommand屬性指定的屬性指定的SQLSQL命令,將命令,將DataS

56、etDataSet對象更新至數(shù)據(jù)庫,參數(shù)的含義與對象更新至數(shù)據(jù)庫,參數(shù)的含義與FillFill方法的相同。方法的相同。4.數(shù)據(jù)集對象數(shù)據(jù)集對象DataSet 9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 數(shù)據(jù)綁定是將數(shù)據(jù)綁定是將WebWeb控件中用于顯示的屬性與數(shù)據(jù)源綁定,從而在控件中用于顯示的屬性與數(shù)據(jù)源綁定,從而在WEBWEB上顯示上顯示數(shù)據(jù)庫的信息。數(shù)據(jù)庫的信息。ASP.NETASP.NET控件既可以綁定簡單數(shù)據(jù)源,也可以綁定復(fù)雜的數(shù)控件既可以綁定簡單數(shù)據(jù)源,也可以綁定復(fù)雜的數(shù)據(jù)源如據(jù)源如DataReaderDataReader、DataSe

57、tDataSet數(shù)據(jù)集等。數(shù)據(jù)集等。 綁定到簡單的數(shù)據(jù)源,比如后臺代碼中定義的公共變量、屬性、集合或表達(dá)綁定到簡單的數(shù)據(jù)源,比如后臺代碼中定義的公共變量、屬性、集合或表達(dá)式等。綁定方法為:式等。綁定方法為: 。1.數(shù)據(jù)綁定數(shù)據(jù)綁定 9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 后臺代碼定義后臺代碼定義2 2個公共變量:個公共變量: public string name = WEBpublic string name = WEB開發(fā)教程開發(fā)教程; public string writer = public string writer = 張三、李四張

58、三、李四; protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e) Page.DataBind(); Page.DataBind(); 1.數(shù)據(jù)綁定數(shù)據(jù)綁定 9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 前臺的綁定代碼為:前臺的綁定代碼為: 教程名:教程名:asp:Label ID=Label1 runat=server Text=%# name asp:Label ID=Label1 runa

59、t=server Text=% 作者:作者:asp:Label ID=Label2 runat=server Text=%# writer asp:Label ID=Label2 runat=server Text= % 1.數(shù)據(jù)綁定數(shù)據(jù)綁定 9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 實(shí)例實(shí)例9-19-1:以之前的新聞表為例,通過后臺代碼方式綁定數(shù)據(jù)到:以之前的新聞表為例,通過后臺代碼方式綁定數(shù)據(jù)到GridViewGridView控控件,顯示新聞列表。件,顯示新聞列表。2.數(shù)據(jù)控件數(shù)據(jù)控件后臺代碼:(注意添加后臺代碼:(注意添加using Sy

60、stem.Data.SqlClient;引用)引用) protected void Page_Load(object sender, EventArgs e)protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) if (!IsPostBack) BindData(); BindData(); 9.2 ASP.NET操作數(shù)據(jù)庫操作數(shù)據(jù)庫9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 2.數(shù)據(jù)控件數(shù)據(jù)控件 private void BindData()private void BindData() SqlCon

溫馨提示

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

評論

0/150

提交評論