版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、大連理工大學(xué)出版社大連理工大學(xué)出版社Web開發(fā)實(shí)用教程開發(fā)實(shí)用教程第第9章章 ASP.NET數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)操作第第9章章 ASP.NET數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)操作v本章概述本章概述 ASP.NETASP.NET數(shù)據(jù)庫(kù)應(yīng)用的開發(fā)采用功能豐富的數(shù)據(jù)庫(kù)應(yīng)用的開發(fā)采用功能豐富的ADO.NET(ActiveX Data ADO.NET(ActiveX Data Object.NET)Object.NET)技術(shù),技術(shù),ADO.NETADO.NET是是.NET.NET框架的一部分,通過(guò)它可以快捷方便的地框架的一部分,通過(guò)它可以快捷方便的地進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)操作。進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)操作。 本章在講解關(guān)系數(shù)據(jù)庫(kù)與本章在講解
2、關(guān)系數(shù)據(jù)庫(kù)與SQLSQL基本語(yǔ)句的基礎(chǔ)上,詳細(xì)講解了基本語(yǔ)句的基礎(chǔ)上,詳細(xì)講解了ADO.NETADO.NET中中幾個(gè)對(duì)象的使用方法及數(shù)據(jù)綁定操作。最后通過(guò)一個(gè)留言本的案例綜合演示幾個(gè)對(duì)象的使用方法及數(shù)據(jù)綁定操作。最后通過(guò)一個(gè)留言本的案例綜合演示了了ASP.NETASP.NET進(jìn)行數(shù)據(jù)庫(kù)開發(fā)的步驟以及基本方法。進(jìn)行數(shù)據(jù)庫(kù)開發(fā)的步驟以及基本方法。第第9章章 ASP.NET數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)操作v學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo) 1 1掌握掌握SQLSQL基本操作語(yǔ)句(基本操作語(yǔ)句(SELECTSELECT、INSERTINSERT、DELETEDELETE、UPDATEUPDATE)的用法;)的用法; 2 2了解了
3、解ADO.NETADO.NET的常用對(duì)象;的常用對(duì)象; 3 3能熟念使用數(shù)據(jù)綁定控件及能熟念使用數(shù)據(jù)綁定控件及C#C#編程操作數(shù)據(jù)庫(kù)。編程操作數(shù)據(jù)庫(kù)。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)與SQL概述概述1. 1. 關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù) 用二維表結(jié)構(gòu)來(lái)表示實(shí)體及實(shí)體間聯(lián)系的模型稱為關(guān)系模型用二維表結(jié)構(gòu)來(lái)表示實(shí)體及實(shí)體間聯(lián)系的模型稱為關(guān)系模型(Relational (Relational Mondel)Mondel)?;??;陉P(guān)系模型關(guān)系模型建立的數(shù)據(jù)庫(kù)即稱為關(guān)系型數(shù)據(jù)庫(kù)。常用的建立的數(shù)據(jù)庫(kù)即稱為關(guān)系型數(shù)據(jù)庫(kù)。常用的ORACLEORACLE、SQL SERVERSQL SER
4、VER、ACCESSACCESS等數(shù)據(jù)庫(kù)都屬于關(guān)系型數(shù)據(jù)庫(kù)。等數(shù)據(jù)庫(kù)都屬于關(guān)系型數(shù)據(jù)庫(kù)。 在關(guān)系型數(shù)據(jù)庫(kù)的二維表結(jié)構(gòu)中,每一行稱為一條記錄,用來(lái)描述一個(gè)在關(guān)系型數(shù)據(jù)庫(kù)的二維表結(jié)構(gòu)中,每一行稱為一條記錄,用來(lái)描述一個(gè)對(duì)象的信息;每一列稱為一個(gè)字段,用來(lái)描述對(duì)象的一個(gè)屬性。對(duì)象的信息;每一列稱為一個(gè)字段,用來(lái)描述對(duì)象的一個(gè)屬性。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)與SQL概述概述1. 1. 關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)的內(nèi)部結(jié)構(gòu)有以下特點(diǎn):關(guān)系型數(shù)據(jù)庫(kù)的內(nèi)部結(jié)構(gòu)有以下特點(diǎn): 數(shù)據(jù)表通常是一個(gè)由行和列組成的二維表,每一個(gè)數(shù)據(jù)表分別說(shuō)明數(shù)據(jù)數(shù)據(jù)表通常是一個(gè)由行和列組成的二維表,
5、每一個(gè)數(shù)據(jù)表分別說(shuō)明數(shù)據(jù)庫(kù)中某一特定的方面或部分的對(duì)象及其屬性。庫(kù)中某一特定的方面或部分的對(duì)象及其屬性。 數(shù)據(jù)表中的行通常叫做記錄或元組,它代表眾多具有相同屬性的對(duì)象中的數(shù)據(jù)表中的行通常叫做記錄或元組,它代表眾多具有相同屬性的對(duì)象中的一個(gè)一個(gè)。 數(shù)據(jù)表中的列通常叫做字段或?qū)傩?,它代表相?yīng)數(shù)據(jù)庫(kù)中存儲(chǔ)對(duì)象的共有數(shù)據(jù)表中的列通常叫做字段或?qū)傩?,它代表相?yīng)數(shù)據(jù)庫(kù)中存儲(chǔ)對(duì)象的共有屬性。屬性。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)與SQL概述概述1. 1. 關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù) 關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)表之間的關(guān)聯(lián)實(shí)際上是通過(guò)關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)表之間的關(guān)聯(lián)實(shí)際上是通過(guò)鍵鍵(KeyKey)來(lái)實(shí)現(xiàn)的
6、。所)來(lái)實(shí)現(xiàn)的。所謂的謂的“鍵鍵”是指數(shù)據(jù)表的一個(gè)字段,鍵分為主鍵(是指數(shù)據(jù)表的一個(gè)字段,鍵分為主鍵(Primary KeyPrimary Key)和外鍵)和外鍵(Foreign KeyForeign Key)兩種,它們都在數(shù)據(jù)表連接的過(guò)程中起著重大的作用。)兩種,它們都在數(shù)據(jù)表連接的過(guò)程中起著重大的作用。 主鍵主鍵(Primary KeyPrimary Key):是數(shù)據(jù)表中具有唯一性的字段,也就是說(shuō)數(shù)據(jù)表):是數(shù)據(jù)表中具有唯一性的字段,也就是說(shuō)數(shù)據(jù)表中任意兩條記錄都不可能擁有相同的主鍵字段。中任意兩條記錄都不可能擁有相同的主鍵字段。 外鍵外鍵(Foreign KeyForeign Key):
7、一個(gè)數(shù)據(jù)表將使用該數(shù)據(jù)表中的外鍵連接到其他):一個(gè)數(shù)據(jù)表將使用該數(shù)據(jù)表中的外鍵連接到其他的數(shù)據(jù)表,而這個(gè)外鍵字段在其他的數(shù)據(jù)表中將作為主鍵字段出現(xiàn)。的數(shù)據(jù)表,而這個(gè)外鍵字段在其他的數(shù)據(jù)表中將作為主鍵字段出現(xiàn)。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)與SQL概述概述2.2. SQLSQL概述概述 SQL SQL是是Structured Query Language(Structured Query Language(結(jié)化查詢語(yǔ)言)的縮寫,它包括結(jié)化查詢語(yǔ)言)的縮寫,它包括定義定義、查詢查詢、操縱操縱和和控制控制關(guān)系數(shù)據(jù)庫(kù)四個(gè)部分,是一種功能強(qiáng)大、使用方便的數(shù)據(jù)關(guān)系數(shù)據(jù)庫(kù)四個(gè)部分,
8、是一種功能強(qiáng)大、使用方便的數(shù)據(jù)庫(kù)語(yǔ)言。由于庫(kù)語(yǔ)言。由于SQLSQL接近于英語(yǔ)自然語(yǔ)言,簡(jiǎn)潔易學(xué),功能豐富,使用靈活,受接近于英語(yǔ)自然語(yǔ)言,簡(jiǎn)潔易學(xué),功能豐富,使用靈活,受到廣泛的支持。經(jīng)不斷發(fā)展完善和擴(kuò)充,到廣泛的支持。經(jīng)不斷發(fā)展完善和擴(kuò)充,19861986年年1010月月SQLSQL被美國(guó)國(guó)家標(biāo)準(zhǔn)局被美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)(ANSI)確定為關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言的美國(guó)標(biāo)準(zhǔn),確定為關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言的美國(guó)標(biāo)準(zhǔn),19871987年年6 6月月SQLSQL又被國(guó)際標(biāo)準(zhǔn)化又被國(guó)際標(biāo)準(zhǔn)化組織組織(ISO)(ISO)采納為關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言的國(guó)際標(biāo)準(zhǔn)。目前,所有生產(chǎn)廠商的數(shù)據(jù)采納為關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言的國(guó)際標(biāo)準(zhǔn)。
9、目前,所有生產(chǎn)廠商的數(shù)據(jù)庫(kù)管理系統(tǒng)都支持庫(kù)管理系統(tǒng)都支持SQLSQL,比如,比如SQL ServerSQL Server、DB2DB2、ORACLEORACLE、SybaseSybase、InformixInformix等。等。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)與SQL概述概述2.2. SQLSQL概述概述 與與C C、JAVAJAVA等強(qiáng)調(diào)流程控制與函數(shù)功能的程序設(shè)計(jì)語(yǔ)言不同,等強(qiáng)調(diào)流程控制與函數(shù)功能的程序設(shè)計(jì)語(yǔ)言不同,SQLSQL強(qiáng)調(diào)的強(qiáng)調(diào)的不是強(qiáng)大的程序結(jié)構(gòu)和自定義函數(shù)等功能,它是一門不是強(qiáng)大的程序結(jié)構(gòu)和自定義函數(shù)等功能,它是一門數(shù)據(jù)庫(kù)操縱數(shù)據(jù)庫(kù)操縱語(yǔ)言。語(yǔ)言。SQ
10、LSQL的的功能主要包括以下幾部分:功能主要包括以下幾部分: DMLDML(Data Manipulation LanguageData Manipulation Language,數(shù)據(jù)操作語(yǔ)言):用于檢索或者,數(shù)據(jù)操作語(yǔ)言):用于檢索或者修改數(shù)據(jù)修改數(shù)據(jù) DDLDDL(Data Definition LanguageData Definition Language,數(shù)據(jù)定義語(yǔ)言):,數(shù)據(jù)定義語(yǔ)言): 用于定義數(shù)據(jù)的用于定義數(shù)據(jù)的結(jié)構(gòu),比如結(jié)構(gòu),比如 創(chuàng)建、修改或者刪除數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建、修改或者刪除數(shù)據(jù)庫(kù)對(duì)象 DCLDCL(Data Control LanguageData Control La
11、nguage,數(shù)據(jù)控制語(yǔ)言):用于定義數(shù)據(jù)庫(kù)用戶,數(shù)據(jù)控制語(yǔ)言):用于定義數(shù)據(jù)庫(kù)用戶的權(quán)限的權(quán)限9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)與SQL概述概述2.2. SQLSQL概述概述DML命令語(yǔ)句及功能說(shuō)明命令語(yǔ)句及功能說(shuō)明 語(yǔ)語(yǔ) 句句說(shuō)說(shuō) 明明SELECTSELECT用于查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù)用于查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù)INSERTINSERT用于增加數(shù)據(jù)到數(shù)據(jù)庫(kù)用于增加數(shù)據(jù)到數(shù)據(jù)庫(kù)UPDATEUPDATE用于從數(shù)據(jù)庫(kù)中修改現(xiàn)存的數(shù)據(jù)用于從數(shù)據(jù)庫(kù)中修改現(xiàn)存的數(shù)據(jù)DELETEDELETE用于從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)用于從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)9.1 SQL基礎(chǔ)基礎(chǔ)9.1.1 關(guān)系數(shù)據(jù)庫(kù)與關(guān)系數(shù)據(jù)庫(kù)與
12、SQL概述概述2.2. SQLSQL概述概述DML命令語(yǔ)句及功能說(shuō)明命令語(yǔ)句及功能說(shuō)明 語(yǔ)語(yǔ) 句句說(shuō)說(shuō) 明明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ù)庫(kù)中刪除表用于從數(shù)據(jù)庫(kù)中刪除表CREATE INDEXCREATE INDEX創(chuàng)建表的索引創(chuàng)建表的索引DROP INDEXDROP INDEX刪除表的索引刪除表的索引9.1 SQL基礎(chǔ)基礎(chǔ)9.1.2 SELECT SELECT SELECT語(yǔ)句是語(yǔ)句是SQLSQL中中DMLDML語(yǔ)句命令最核心
13、、功能最強(qiáng)大的語(yǔ)句。在數(shù)據(jù)庫(kù)語(yǔ)句命令最核心、功能最強(qiáng)大的語(yǔ)句。在數(shù)據(jù)庫(kù)應(yīng)用中,最常用的操作就是應(yīng)用中,最常用的操作就是查詢查詢。SELECTSELECT語(yǔ)句與各類語(yǔ)句與各類SQLSQL子句結(jié)合可以完成各子句結(jié)合可以完成各類復(fù)雜的查詢操作。類復(fù)雜的查詢操作。 SELECT SELECT語(yǔ)句用于查詢數(shù)據(jù)庫(kù)并檢索匹配你指定條件的選擇數(shù)據(jù)。語(yǔ)句用于查詢數(shù)據(jù)庫(kù)并檢索匹配你指定條件的選擇數(shù)據(jù)。SELECTSELECT語(yǔ)句有五個(gè)主要的子句可以選擇,而語(yǔ)句有五個(gè)主要的子句可以選擇,而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語(yǔ)句必須的子語(yǔ)句必須的子句,它指定從其中檢索數(shù)據(jù)的數(shù)據(jù)表或數(shù)據(jù)視圖,即查詢結(jié)果的來(lái)源。句,它指定從其中檢索數(shù)據(jù)的數(shù)據(jù)表或數(shù)據(jù)視圖,即查詢結(jié)果的來(lái)源。 實(shí)例實(shí)例9-1:FROM子句子句 u 查詢新聞表里的所有新聞信息的查詢新聞表里的所有新聞信息的SQL語(yǔ)句為:語(yǔ)句為: 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 查詢新聞表里新聞?lì)悇e查詢新聞表里新聞?lì)悇eID為為1的新聞標(biāo)題、新聞內(nèi)容和添加時(shí)間的的新聞標(biāo)題、新聞內(nèi)容和添加時(shí)間的SQL語(yǔ)句為:語(yǔ)句為: 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子句一起使用,用于指定組或聚合的過(guò)濾條件。它們通常與子句一起使用,用于指定組或聚合的過(guò)濾條件。它們通常與SQL聚合函數(shù)一起使用。聚合函數(shù)一起使用。9.1 SQL基礎(chǔ)基礎(chǔ)9.1.2 SELECTu 假設(shè)我們的假設(shè)我們的employee表中包含雇員的表中包含雇員的name、departmen、salary和和age。如果你想。如果你想為每個(gè)部門中每個(gè)雇員選擇平均工資,并且你還想只計(jì)算和顯示為每個(gè)部門中每個(gè)雇員選擇平均工資,并且你還想只計(jì)算和顯示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子句用于對(duì)查詢的結(jié)果排序,子句用于對(duì)查詢的結(jié)果排序,ASC指定按遞增順序排序,指定按遞增順序排序,DESC指定指定按遞減順序排序。按遞減順序排序。 u 查詢新聞表中最新的新聞,以發(fā)布時(shí)間倒序排列的查詢新聞表中最新的新聞,以發(fā)布時(shí)間倒序排列的SQL語(yǔ)句為:語(yǔ)句為: SELECT * FROM
19、 T_News ORDER BY AddTime DESC;9.1 SQL基礎(chǔ)基礎(chǔ)9.1.3 INSERTINSERTINSERT語(yǔ)句用于為數(shù)據(jù)表語(yǔ)句用于為數(shù)據(jù)表增加增加一條或多條數(shù)據(jù)。它的語(yǔ)法格式為:一條或多條數(shù)據(jù)。它的語(yǔ)法格式為: 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、語(yǔ)句時(shí),語(yǔ)句時(shí),VALUESVALUES后的數(shù)據(jù)值必須與插入表的列相匹配。包后的數(shù)據(jù)值必須與插入表的列相匹配。包括數(shù)據(jù)值的數(shù)目必須與列數(shù)相同,每個(gè)數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)括數(shù)據(jù)值的數(shù)目必須與列數(shù)相同,每個(gè)數(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中字符串中字符串必須用必須用單引號(hào)單引號(hào)括起來(lái)。括起來(lái)。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(國(guó)內(nèi)新聞標(biāo)題國(guó)內(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語(yǔ)句的功能是從數(shù)據(jù)表中語(yǔ)句的功能是從數(shù)據(jù)表中刪除行刪除行,其語(yǔ)法格式為:,其語(yǔ)法格式為: 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中刪除新聞?lì)悇e為中刪除新聞?lì)悇e為1的行的行 DELETE FROM T_News WHERE ClassId=1; 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.5 UPDATEUPDATEUPDATE語(yǔ)句的功能是語(yǔ)句的功能是修改修改數(shù)據(jù)表中的數(shù)據(jù)行,其語(yǔ)法格式為:數(shù)據(jù)表中的數(shù)據(jù)行,其語(yǔ)法格式為: 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指指定,如需修改多個(gè)列,則中間用定,如需修改多個(gè)列,則中間用逗號(hào)逗號(hào)隔開。若省略隔開。若省略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 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程(存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的)是一組為了完成特定功能的SQL語(yǔ)句集,語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)。用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)。用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并
25、給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。在存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。在SQL Server的系列版本中存儲(chǔ)過(guò)程分為兩的系列版本中存儲(chǔ)過(guò)程分為兩類:類:系統(tǒng)提供的存儲(chǔ)過(guò)程系統(tǒng)提供的存儲(chǔ)過(guò)程和和用戶自定義存儲(chǔ)過(guò)程用戶自定義存儲(chǔ)過(guò)程。系統(tǒng)存儲(chǔ)過(guò)程主要存儲(chǔ)在。系統(tǒng)存儲(chǔ)過(guò)程主要存儲(chǔ)在master數(shù)據(jù)庫(kù)中并以數(shù)據(jù)庫(kù)中并以sp_為前綴,并且系統(tǒng)存儲(chǔ)過(guò)程主要是從系統(tǒng)表中獲取信為前綴,并且系統(tǒng)存儲(chǔ)過(guò)程主要是從系統(tǒng)表中獲取信息,而且當(dāng)創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)時(shí),一些系統(tǒng)存儲(chǔ)過(guò)程會(huì)在新數(shù)據(jù)庫(kù)中被自動(dòng)息,而且當(dāng)創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)時(shí),一些系統(tǒng)存儲(chǔ)過(guò)程會(huì)在新數(shù)據(jù)庫(kù)中被自動(dòng)創(chuàng)建。用戶自定義存儲(chǔ)過(guò)程是由用戶創(chuàng)建并能完成某一特定功
26、能(如查詢用創(chuàng)建。用戶自定義存儲(chǔ)過(guò)程是由用戶創(chuàng)建并能完成某一特定功能(如查詢用戶所需數(shù)據(jù)信息)的存儲(chǔ)過(guò)程。戶所需數(shù)據(jù)信息)的存儲(chǔ)過(guò)程。 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程下面是下面是SQL中創(chuàng)建存儲(chǔ)過(guò)程的基本語(yǔ)法:中創(chuàng)建存儲(chǔ)過(guò)程的基本語(yǔ)法: CREATE PROC EDURE procedure_name parameter data_type = default OUTPUT ,.n AS sql_statement .n 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程創(chuàng)建語(yǔ)句各參數(shù)含義說(shuō)明存儲(chǔ)過(guò)程創(chuàng)建語(yǔ)句各參數(shù)含義說(shuō)明 參參 數(shù)數(shù)說(shuō)說(shuō) 明明procedure_
27、nameprocedure_name要?jiǎng)?chuàng)建的存儲(chǔ)過(guò)程名稱,必須是當(dāng)前數(shù)據(jù)庫(kù)中唯一的要?jiǎng)?chuàng)建的存儲(chǔ)過(guò)程名稱,必須是當(dāng)前數(shù)據(jù)庫(kù)中唯一的parameterparameter存儲(chǔ)過(guò)程的參數(shù)。用戶必須在執(zhí)行過(guò)程時(shí)提供每個(gè)所聲存儲(chǔ)過(guò)程的參數(shù)。用戶必須在執(zhí)行過(guò)程時(shí)提供每個(gè)所聲明參數(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ù)是一個(gè)返回參數(shù)表明該參數(shù)是一個(gè)返回參數(shù)ASAS指明該存儲(chǔ)過(guò)程將
28、要執(zhí)行的動(dòng)作指明該存儲(chǔ)過(guò)程將要執(zhí)行的動(dòng)作sql_statementsql_statement包含在存儲(chǔ)過(guò)程任何數(shù)量和類型的包含在存儲(chǔ)過(guò)程任何數(shù)量和類型的SQLSQL語(yǔ)句語(yǔ)句9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程 在在WEB開發(fā)中使用存儲(chǔ)過(guò)程主要有兩大好處:第一是可以開發(fā)中使用存儲(chǔ)過(guò)程主要有兩大好處:第一是可以加快程序執(zhí)行加快程序執(zhí)行速度速度,因?yàn)榇鎯?chǔ)過(guò)程由數(shù)據(jù)庫(kù)批量執(zhí)行,減少了對(duì)數(shù)據(jù)庫(kù)連接,并會(huì)被數(shù)據(jù),因?yàn)榇鎯?chǔ)過(guò)程由數(shù)據(jù)庫(kù)批量執(zhí)行,減少了對(duì)數(shù)據(jù)庫(kù)連接,并會(huì)被數(shù)據(jù)庫(kù)優(yōu)化。另外當(dāng)客戶端調(diào)用存儲(chǔ)過(guò)程時(shí),只需要傳輸該調(diào)用語(yǔ)句及參數(shù),而庫(kù)優(yōu)化。另外當(dāng)客戶端調(diào)用存儲(chǔ)過(guò)程時(shí),只需要傳輸該調(diào)用語(yǔ)句
29、及參數(shù),而不是傳輸多條不是傳輸多條SQL語(yǔ)句,因此減少了網(wǎng)絡(luò)傳輸流量;第二是語(yǔ)句,因此減少了網(wǎng)絡(luò)傳輸流量;第二是增強(qiáng)安全性增強(qiáng)安全性,開,開發(fā)人員可以對(duì)存儲(chǔ)過(guò)程進(jìn)行有效權(quán)限限制。另外存儲(chǔ)過(guò)程采用參數(shù)化的傳輸發(fā)人員可以對(duì)存儲(chǔ)過(guò)程進(jìn)行有效權(quán)限限制。另外存儲(chǔ)過(guò)程采用參數(shù)化的傳輸方式,可以有效地防止方式,可以有效地防止SQL注入式攻擊。注入式攻擊。 9.1 SQL基礎(chǔ)基礎(chǔ)9.1.6 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程實(shí)例實(shí)例9-8 u 從數(shù)據(jù)表從數(shù)據(jù)表T_News中刪除指定新聞?lì)悇e的行的存儲(chǔ)過(guò)程中刪除指定新聞?lì)悇e的行的存儲(chǔ)過(guò)程 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ù)庫(kù)設(shè)計(jì)實(shí)例數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)例 數(shù)據(jù)庫(kù)設(shè)計(jì)可采用數(shù)據(jù)庫(kù)設(shè)計(jì)可采用E-R(E-R(實(shí)體實(shí)體- -聯(lián)系聯(lián)系) )分析方法,分析方法,E-RE-R分析結(jié)果直觀易懂,容分析結(jié)果直觀易懂,容易轉(zhuǎn)化為數(shù)據(jù)庫(kù)表,它的主導(dǎo)思想是使用實(shí)體(易轉(zhuǎn)化為數(shù)據(jù)庫(kù)表,它的主導(dǎo)思想是使用實(shí)體(EntityEntity)實(shí)體的屬性)實(shí)體的屬性(AttributionAttributi
31、on)以及實(shí)體之間的關(guān)系()以及實(shí)體之間的關(guān)系(RelationshipRelationship)來(lái)表示數(shù)據(jù)庫(kù)系統(tǒng))來(lái)表示數(shù)據(jù)庫(kù)系統(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ù)庫(kù)設(shè)計(jì)實(shí)例數(shù)據(jù)庫(kù)設(shè)計(jì)實(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)換過(guò)程中,首圖向數(shù)據(jù)表轉(zhuǎn)換過(guò)程中,首先需要將實(shí)體轉(zhuǎn)換為
32、一個(gè)獨(dú)立的數(shù)先需要將實(shí)體轉(zhuǎn)換為一個(gè)獨(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ù)庫(kù)設(shè)計(jì)實(shí)例數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)例學(xué)生表結(jié)構(gòu)設(shè)計(jì)學(xué)生表結(jié)構(gòu)設(shè)計(jì)字字 段段數(shù)據(jù)類型數(shù)據(jù)類型是否主鍵是否主鍵說(shuō)說(shuō) 明明Stu_IDStu_IDVarchar(20)Varchar(20)是是學(xué)生學(xué)號(hào)作為主鍵學(xué)生學(xué)號(hào)作為主鍵唯一標(biāo)識(shí)一名學(xué)生唯一標(biāo)識(shí)一名學(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é)生班級(jí)學(xué)生班級(jí)9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.1 ASP.NET數(shù)據(jù)庫(kù)訪問(wèn)概述數(shù)據(jù)庫(kù)訪問(wèn)概述 ASP.NET ASP.NET訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)是基于訪問(wèn)數(shù)據(jù)庫(kù)的技術(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ù)庫(kù)連公司開發(fā)的用于數(shù)據(jù)庫(kù)連接的一套組件模型,是接的一套組件模型,是ADOADO的升級(jí)版本。的升級(jí)版本。 由于由于ADO.NETADO.NET組件模型很好地融入了組件模型很好地融入了.NET Framework.NET Framework有非常好的兼容性與高有非常好的兼容性與高效性。程序員能使用效性。程序員能使用ADO.NETADO.NET組件模型,方便高效地連接和訪問(wèn)數(shù)據(jù)庫(kù)。組件模型,方便高效地連接和訪問(wèn)數(shù)據(jù)庫(kù)。 它是與數(shù)據(jù)庫(kù)訪問(wèn)操作有關(guān)的對(duì)象模型的集合,它基于它是與數(shù)據(jù)庫(kù)訪問(wèn)操作有關(guān)的對(duì)象模型的集合,它基于MicrosoftMicrosof
35、t的的.NET .NET FrameworkFramework,在很大程度上封裝了數(shù)據(jù)庫(kù)訪問(wèn)和數(shù)據(jù)操作的動(dòng)作。,在很大程度上封裝了數(shù)據(jù)庫(kù)訪問(wèn)和數(shù)據(jù)操作的動(dòng)作。9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.1 ASP.NET數(shù)據(jù)庫(kù)訪問(wèn)概述數(shù)據(jù)庫(kù)訪問(wèn)概述ADO.NETADO.NET同其前身同其前身ADOADO系列訪問(wèn)數(shù)據(jù)庫(kù)的組件相比,做了以下兩點(diǎn)重要改進(jìn):系列訪問(wèn)數(shù)據(jù)庫(kù)的組件相比,做了以下兩點(diǎn)重要改進(jìn): ADO.NET ADO.NET引入了引入了離線的數(shù)據(jù)結(jié)果集離線的數(shù)據(jù)結(jié)果集(Disconnected DataSet)(Disconnected DataSet)這個(gè)概念,通這個(gè)概念,通過(guò)使用
36、離線的數(shù)據(jù)結(jié)果集,程序員便可以在數(shù)據(jù)庫(kù)斷開的情況下訪問(wèn)數(shù)據(jù)庫(kù)。過(guò)使用離線的數(shù)據(jù)結(jié)果集,程序員便可以在數(shù)據(jù)庫(kù)斷開的情況下訪問(wèn)數(shù)據(jù)庫(kù)。 ADO.NET ADO.NET還提供了對(duì)還提供了對(duì)XMLXML格式文檔格式文檔的支持,所以通過(guò)的支持,所以通過(guò)ADO.NETADO.NET組件可以方便組件可以方便地在異構(gòu)環(huán)境的項(xiàng)目間讀取和交換數(shù)據(jù)。地在異構(gòu)環(huán)境的項(xiàng)目間讀取和交換數(shù)據(jù)。9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.1 ASP.NET數(shù)據(jù)庫(kù)訪問(wèn)概述數(shù)據(jù)庫(kù)訪問(wèn)概述 ADO.NET ADO.NET對(duì)象模型主要包括以下兩個(gè)部分:一個(gè)是對(duì)象模型主要包括以下兩個(gè)部分:一個(gè)是.NET.NET數(shù)據(jù)提供程序數(shù)據(jù)提
37、供程序,它,它能與數(shù)據(jù)源連接,并執(zhí)行針對(duì)數(shù)據(jù)源的能與數(shù)據(jù)源連接,并執(zhí)行針對(duì)數(shù)據(jù)源的SQLSQL命令,它又包括命令,它又包括ConnectionConnection對(duì)象、對(duì)象、CommandCommand對(duì)象、對(duì)象、DataReaderDataReader對(duì)象和對(duì)象和DataAdapterDataAdapter對(duì)象對(duì)象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命名空間中;命名空間中;另一個(gè)是另一個(gè)是數(shù)據(jù)集數(shù)據(jù)集(DataSetDataSet),與數(shù)據(jù)源分離且不需要知道所保持?jǐn)?shù)據(jù)的來(lái)),與數(shù)據(jù)源分離且不需要知道所保持?jǐn)?shù)據(jù)的來(lái)源,將數(shù)據(jù)保存在內(nèi)存中。源,將數(shù)據(jù)保存在內(nèi)存中。9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)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可以快捷地訪問(wèn)數(shù)據(jù)庫(kù)。可以快捷地訪問(wèn)數(shù)據(jù)庫(kù)。 A A利用利用ADO.NETADO.NET進(jìn)行數(shù)據(jù)庫(kù)操作的一般流程是:進(jìn)行數(shù)據(jù)庫(kù)操作的一般流程是: 第一步第一步:創(chuàng)建數(shù)據(jù)庫(kù);:創(chuàng)建數(shù)據(jù)庫(kù); 第二步第二步:使用:使用ConnectionConnection對(duì)象創(chuàng)建到數(shù)據(jù)庫(kù)的鏈接;對(duì)象創(chuàng)建到數(shù)據(jù)庫(kù)的鏈接; 第三步第三步:操作數(shù)據(jù)庫(kù),包括:操作數(shù)據(jù)庫(kù),包括(1)(1)使用使用CommandCommand對(duì)象對(duì)數(shù)據(jù)源執(zhí)行對(duì)象對(duì)數(shù)據(jù)源執(zhí)行SQLSQL命令或命令或存儲(chǔ)過(guò)程并返回?cái)?shù)據(jù);存儲(chǔ)過(guò)程并返回?cái)?shù)據(jù);(2)(2)利用利用DataReaderDataReader
40、對(duì)象或?qū)ο蠡駾ataSetDataSet對(duì)象讀取和處理返回對(duì)象讀取和處理返回的數(shù)據(jù);的數(shù)據(jù); 第四步第四步:關(guān)閉數(shù)據(jù)庫(kù)連接,釋放資源。:關(guān)閉數(shù)據(jù)庫(kù)連接,釋放資源。9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NET Connection對(duì)象用來(lái)創(chuàng)建到數(shù)據(jù)庫(kù)的鏈接,它的對(duì)象用來(lái)創(chuàng)建到數(shù)據(jù)庫(kù)的鏈接,它的ConnectionString屬性常用屬性常用參數(shù)及說(shuō)明見下表。參數(shù)及說(shuō)明見下表。 1.數(shù)據(jù)庫(kù)連接對(duì)象數(shù)據(jù)庫(kù)連接對(duì)象Connection 參參 數(shù)數(shù)說(shuō)說(shuō) 明明Data SourceData Source要連接到的要連接到的SQL ServerSQL Server數(shù)據(jù)庫(kù)服務(wù)器名稱或者
41、數(shù)據(jù)庫(kù)服務(wù)器名稱或者IPIP地址地址Initial CatalogInitial Catalog設(shè)置要連接的數(shù)據(jù)庫(kù)名稱設(shè)置要連接的數(shù)據(jù)庫(kù)名稱User IDUser ID訪問(wèn)訪問(wèn)SQL ServerSQL Server數(shù)據(jù)庫(kù)的帳號(hào)數(shù)據(jù)庫(kù)的帳號(hào)PasswordPassword訪問(wèn)訪問(wèn)SQL ServerSQL Server數(shù)據(jù)庫(kù)的密碼數(shù)據(jù)庫(kù)的密碼9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NETConnectionConnection對(duì)象的常用方法主要有:對(duì)象的常用方法主要有:v Open()Open()方法方法: :打開數(shù)據(jù)庫(kù)連接,打開數(shù)據(jù)庫(kù)連接,ConnectionStrin
42、gConnectionString屬性只是設(shè)置了數(shù)據(jù)庫(kù)屬性只是設(shè)置了數(shù)據(jù)庫(kù)訪問(wèn)的鏈接字符串,并沒有打開數(shù)據(jù)庫(kù),必須通過(guò)此方法來(lái)打開。訪問(wèn)的鏈接字符串,并沒有打開數(shù)據(jù)庫(kù),必須通過(guò)此方法來(lái)打開。v Close()Close()方法方法:關(guān)閉數(shù)據(jù)庫(kù),數(shù)據(jù)源使用完后必須關(guān)閉數(shù)據(jù)庫(kù)連接,以釋:關(guān)閉數(shù)據(jù)庫(kù),數(shù)據(jù)源使用完后必須關(guān)閉數(shù)據(jù)庫(kù)連接,以釋放內(nèi)存資源。放內(nèi)存資源。1.數(shù)據(jù)庫(kù)連接對(duì)象數(shù)據(jù)庫(kù)連接對(duì)象Connection 數(shù)據(jù)庫(kù)連接的創(chuàng)建方法為:數(shù)據(jù)庫(kù)連接的創(chuàng)建方法為: SqlConnection cn=new SqlConnection( SqlConnection cn=new SqlConnectio
43、n(數(shù)據(jù)庫(kù)連接字符串?dāng)?shù)據(jù)庫(kù)連接字符串);); cn.Open(); cn.Open(); cn.Close(); cn.Close();9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NET Command Command對(duì)象的對(duì)象的ExecuteExecute方法可以執(zhí)行方法可以執(zhí)行SQLSQL指令并返回?cái)?shù)據(jù)。其創(chuàng)建方法為:指令并返回?cái)?shù)據(jù)。其創(chuàng)建方法為: SqlCommand cmd=new SqlCommand(cmdText,connection); SqlCommand cmd=new SqlCommand(cmdText,connection); 其中其中cmdText
44、cmdText指定要執(zhí)行的指定要執(zhí)行的SQLSQL命令語(yǔ)句,命令語(yǔ)句,connectionconnection為數(shù)據(jù)庫(kù)連接對(duì)象。這兩為數(shù)據(jù)庫(kù)連接對(duì)象。這兩個(gè)參數(shù)在創(chuàng)建的時(shí)候也可以省略,創(chuàng)建之后再通過(guò)個(gè)參數(shù)在創(chuàng)建的時(shí)候也可以省略,創(chuàng)建之后再通過(guò)SqlCommandSqlCommand對(duì)象的對(duì)象的CommandTextCommandText屬性設(shè)置屬性設(shè)置SQLSQL命令語(yǔ)句、命令語(yǔ)句、ConnectionConnection屬性設(shè)置數(shù)據(jù)庫(kù)連接對(duì)象。屬性設(shè)置數(shù)據(jù)庫(kù)連接對(duì)象。2. SQL命令執(zhí)行器對(duì)象命令執(zhí)行器對(duì)象Command 9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NETC
45、ommandCommand對(duì)象的方法常用的主要有以下幾個(gè):對(duì)象的方法常用的主要有以下幾個(gè):v Cancel()Cancel(): :取消執(zhí)行取消執(zhí)行CommandCommand對(duì)象;對(duì)象;v ExecuteReader()ExecuteReader(): :執(zhí)行執(zhí)行CommandTextCommandText屬性中的屬性中的SQLSQL語(yǔ)句并創(chuàng)建語(yǔ)句并創(chuàng)建DataReaderDataReader對(duì)象,對(duì)象,返回?cái)?shù)據(jù)集合存儲(chǔ)于返回?cái)?shù)據(jù)集合存儲(chǔ)于DataReaderDataReader對(duì)象中;對(duì)象中;v ExecuteScalar()ExecuteScalar(): :執(zhí)行執(zhí)行CommandTex
46、tCommandText屬性設(shè)置的屬性設(shè)置的SQLSQL語(yǔ)句并返回首行首列的數(shù)據(jù),語(yǔ)句并返回首行首列的數(shù)據(jù),此方法常用于執(zhí)行此方法常用于執(zhí)行SelectSelect命令需返回單個(gè)數(shù)據(jù)的情況;命令需返回單個(gè)數(shù)據(jù)的情況;v ExecuteNonQuery()ExecuteNonQuery():執(zhí)行執(zhí)行CommandText屬性設(shè)置的屬性設(shè)置的SQL語(yǔ)句只返回影響的數(shù)語(yǔ)句只返回影響的數(shù)據(jù)行數(shù),此方法常用于執(zhí)行據(jù)行數(shù),此方法常用于執(zhí)行Update、Insert、Delete等數(shù)據(jù)更新插入刪除操作。等數(shù)據(jù)更新插入刪除操作。 2. SQL命令執(zhí)行器對(duì)象命令執(zhí)行器對(duì)象Command 9.2 ASP.NET操
47、作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NET DataReader DataReader對(duì)象數(shù)據(jù)讀取的特點(diǎn)是能夠?qū)ο髷?shù)據(jù)讀取的特點(diǎn)是能夠快速快速、向前向前、只讀只讀地訪問(wèn)數(shù)據(jù)源,地訪問(wèn)數(shù)據(jù)源,每次在內(nèi)存中就處理一條數(shù)據(jù),因此使用每次在內(nèi)存中就處理一條數(shù)據(jù),因此使用DataReaderDataReader提高應(yīng)用程序的性能,提高應(yīng)用程序的性能,減少系統(tǒng)的開銷。減少系統(tǒng)的開銷。3.數(shù)據(jù)讀取器對(duì)象數(shù)據(jù)讀取器對(duì)象DataReader DataReader DataReader的創(chuàng)建方法為:的創(chuàng)建方法為: SqlDataReader sdr=cmd.ExecuteReader();cmd SqlData
48、Reader sdr=cmd.ExecuteReader();cmd為為CommandCommand對(duì)象。對(duì)象。 DataReader DataReader常用的屬性有常用的屬性有IsClosedIsClosed,用來(lái)判斷,用來(lái)判斷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ù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NETDataReaderDataReader常用的方法有:常用的方法有:v Close()Close(): :關(guān)閉關(guān)閉DataReaderDataRea
49、der對(duì)象,用完之后一定要關(guān)閉,節(jié)省資源;對(duì)象,用完之后一定要關(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ù)讀取器對(duì)象數(shù)據(jù)讀取器對(duì)象DataReader9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NET DataSet是是ADO.NET的核心組成部分,它通過(guò)的核心組成部分,它通過(guò)Da
50、taAdapter對(duì)象來(lái)訪問(wèn)數(shù)據(jù)庫(kù),對(duì)象來(lái)訪問(wèn)數(shù)據(jù)庫(kù),它使用它使用無(wú)連接模式無(wú)連接模式訪問(wèn)數(shù)據(jù)庫(kù),數(shù)據(jù)集訪問(wèn)數(shù)據(jù)庫(kù),數(shù)據(jù)集DataSet通過(guò)數(shù)據(jù)適配器通過(guò)數(shù)據(jù)適配器DataAdapter將數(shù)將數(shù)據(jù)庫(kù)表映射到內(nèi)存中,數(shù)據(jù)一旦從數(shù)據(jù)庫(kù)讀取進(jìn)據(jù)庫(kù)表映射到內(nèi)存中,數(shù)據(jù)一旦從數(shù)據(jù)庫(kù)讀取進(jìn)DataSet便自動(dòng)斷開連接,結(jié)束對(duì)便自動(dòng)斷開連接,結(jié)束對(duì)數(shù)據(jù)庫(kù)的鎖定。數(shù)據(jù)庫(kù)的鎖定。 4.數(shù)據(jù)集對(duì)象數(shù)據(jù)集對(duì)象DataSet 避免多個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的爭(zhēng)奪,其訪問(wèn)數(shù)據(jù)庫(kù)的步驟如下:避免多個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的爭(zhēng)奪,其訪問(wèn)數(shù)據(jù)庫(kù)的步驟如下: 第一步第一步:使用:使用Connection對(duì)象創(chuàng)建連接;對(duì)象創(chuàng)建連接; 第二步第二步:
51、使用:使用DataAdapter對(duì)象執(zhí)行對(duì)象執(zhí)行SQL命令并返回?cái)?shù)據(jù)集;命令并返回?cái)?shù)據(jù)集; 第三步第三步:使用:使用DataSet處理返回的數(shù)據(jù)集結(jié)果。處理返回的數(shù)據(jù)集結(jié)果。9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NETDataSetDataSet對(duì)象由三個(gè)集合組成即對(duì)象由三個(gè)集合組成即TablesTables、RelationsRelations和和ExtendedPeopertiesExtendedPeoperties。4.數(shù)據(jù)集對(duì)象數(shù)據(jù)集對(duì)象DataSet Tables集合集合:DataSet.Tables屬性是一個(gè)屬性是一個(gè)DataTableCollection對(duì)
52、象,包含對(duì)象,包含0個(gè)個(gè)或多個(gè)或多個(gè)DataTable對(duì)象,分別對(duì)應(yīng)數(shù)據(jù)源的一個(gè)數(shù)據(jù)表。對(duì)象,分別對(duì)應(yīng)數(shù)據(jù)源的一個(gè)數(shù)據(jù)表。 DataAdapter對(duì)象是與對(duì)象是與DataSet配合使用用來(lái)執(zhí)行配合使用用來(lái)執(zhí)行SQL命令的對(duì)象,它負(fù)責(zé)命令的對(duì)象,它負(fù)責(zé)處理數(shù)據(jù)源格式與處理數(shù)據(jù)源格式與DataSet使用格式之間的轉(zhuǎn)換。它通過(guò)使用格式之間的轉(zhuǎn)換。它通過(guò)Fill方法把數(shù)據(jù)源中的表方法把數(shù)據(jù)源中的表填充到填充到DataSet對(duì)象中,在對(duì)數(shù)據(jù)完成添加、刪除、或修改操作后再調(diào)用對(duì)象中,在對(duì)數(shù)據(jù)完成添加、刪除、或修改操作后再調(diào)用Update方法更新數(shù)據(jù)源。它的創(chuàng)建方法如下:方法更新數(shù)據(jù)源。它的創(chuàng)建方法如下:
53、SqlDataAdapter sda=new SqlDataAdapter();9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NETDataAdapter對(duì)象常用屬性及說(shuō)明對(duì)象常用屬性及說(shuō)明 4.數(shù)據(jù)集對(duì)象數(shù)據(jù)集對(duì)象DataSet 屬屬 性性說(shuō)說(shuō) 明明InsertCommandInsertCommand獲取或設(shè)置用來(lái)從數(shù)據(jù)庫(kù)插入數(shù)據(jù)的獲取或設(shè)置用來(lái)從數(shù)據(jù)庫(kù)插入數(shù)據(jù)的SQLSQL命令命令DeleteCommandDeleteCommand獲取或設(shè)置用來(lái)從數(shù)據(jù)庫(kù)刪除數(shù)據(jù)的獲取或設(shè)置用來(lái)從數(shù)據(jù)庫(kù)刪除數(shù)據(jù)的SQLSQL命令命令SelectCommandSelectCommand獲取或設(shè)
54、置用來(lái)從數(shù)據(jù)庫(kù)選取數(shù)據(jù)的獲取或設(shè)置用來(lái)從數(shù)據(jù)庫(kù)選取數(shù)據(jù)的SQLSQL命令命令UpdateCommandUpdateCommand獲取或設(shè)置用來(lái)從數(shù)據(jù)庫(kù)更新數(shù)據(jù)的獲取或設(shè)置用來(lái)從數(shù)據(jù)庫(kù)更新數(shù)據(jù)的SQLSQL命令命令9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.2 ADO.NETDataAdapterDataAdapter對(duì)象的常用方法如下:對(duì)象的常用方法如下:v Fill(dataset,srcTable)Fill(dataset,srcTable): :將將SelectCommandSelectCommand屬性指定的屬性指定的SQLSQL命令返回的結(jié)果填命令返回的結(jié)果填充至充至DataS
55、etDataSet的的TablesTables集合中,參數(shù)集合中,參數(shù)datasetdataset為要填充的為要填充的DataSetDataSet對(duì)象,參數(shù)對(duì)象,參數(shù)srcTablesrcTable指定數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)來(lái)源表的名稱。指定數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)來(lái)源表的名稱。v Update(dataset,srcTable) Update(dataset,srcTable): :調(diào)用調(diào)用InsertCommandInsertCommand、DeleteCommandDeleteCommand、UpdateCommandUpdateCommand屬性指定的屬性指定的SQLSQL命令,將命令,將DataS
56、etDataSet對(duì)象更新至數(shù)據(jù)庫(kù),參數(shù)的含義與對(duì)象更新至數(shù)據(jù)庫(kù),參數(shù)的含義與FillFill方法的相同。方法的相同。4.數(shù)據(jù)集對(duì)象數(shù)據(jù)集對(duì)象DataSet 9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 數(shù)據(jù)綁定是將數(shù)據(jù)綁定是將WebWeb控件中用于顯示的屬性與數(shù)據(jù)源綁定,從而在控件中用于顯示的屬性與數(shù)據(jù)源綁定,從而在WEBWEB上顯示上顯示數(shù)據(jù)庫(kù)的信息。數(shù)據(jù)庫(kù)的信息。ASP.NETASP.NET控件既可以綁定簡(jiǎn)單數(shù)據(jù)源,也可以綁定復(fù)雜的數(shù)控件既可以綁定簡(jiǎn)單數(shù)據(jù)源,也可以綁定復(fù)雜的數(shù)據(jù)源如據(jù)源如DataReaderDataReader、DataSe
57、tDataSet數(shù)據(jù)集等。數(shù)據(jù)集等。 綁定到簡(jiǎn)單的數(shù)據(jù)源,比如后臺(tái)代碼中定義的公共變量、屬性、集合或表達(dá)綁定到簡(jiǎn)單的數(shù)據(jù)源,比如后臺(tái)代碼中定義的公共變量、屬性、集合或表達(dá)式等。綁定方法為:式等。綁定方法為: 。1.數(shù)據(jù)綁定數(shù)據(jù)綁定 9.2 ASP.NET操作數(shù)據(jù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 后臺(tái)代碼定義后臺(tái)代碼定義2 2個(gè)公共變量:個(gè)公共變量: 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ù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 前臺(tái)的綁定代碼為:前臺(tái)的綁定代碼為: 教程名:教程名: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ù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 實(shí)例實(shí)例9-19-1:以之前的新聞表為例,通過(guò)后臺(tái)代碼方式綁定數(shù)據(jù)到:以之前的新聞表為例,通過(guò)后臺(tái)代碼方式綁定數(shù)據(jù)到GridViewGridView控控件,顯示新聞列表。件,顯示新聞列表。2.數(shù)據(jù)控件數(shù)據(jù)控件后臺(tái)代碼:(注意添加后臺(tái)代碼:(注意添加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ù)庫(kù)操作數(shù)據(jù)庫(kù)9.2.3 數(shù)據(jù)綁定與數(shù)據(jù)控件數(shù)據(jù)綁定與數(shù)據(jù)控件 2.數(shù)據(jù)控件數(shù)據(jù)控件 private void BindData()private void BindData() SqlCon
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 室外景觀設(shè)計(jì)師的植物配置與環(huán)境打造
- 保健品行業(yè)話務(wù)員工作總結(jié)
- 2025年中考物理一輪復(fù)習(xí)之物態(tài)變化
- 超市行業(yè)客服工作總結(jié)周到服務(wù)增添購(gòu)物樂趣
- 化妝護(hù)膚行業(yè)銷售工作總結(jié)
- 餐飲服務(wù)員工作總結(jié)熱情招待細(xì)心服務(wù)顧客
- 【八年級(jí)下冊(cè)地理湘教版】專項(xiàng)02 港、澳、臺(tái)的經(jīng)濟(jì)發(fā)展
- 2024年熱鬧的元宵節(jié)教案
- 2024年石家莊理工職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 《毛澤東思想和中國(guó)特色社會(huì)主義理論體系概論》復(fù)習(xí)大綱
- 2024版幼兒園課件《兒童的一百種語(yǔ)言》
- DLT817-2014 立式水輪發(fā)電機(jī)檢修技術(shù)規(guī)程
- 普外科乳房手術(shù)臨床技術(shù)操作規(guī)范2023版
- 2023年酒店前臺(tái)經(jīng)理個(gè)人工作述職報(bào)告
- 全國(guó)各城市的50年一遇雪壓和風(fēng)壓
- 英語(yǔ)聽力技巧與應(yīng)用(山東聯(lián)盟)智慧樹知到課后章節(jié)答案2023年下濱州學(xué)院
- 2024屆甘肅省平?jīng)鍪徐o寧縣英語(yǔ)九年級(jí)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 寧夏農(nóng)產(chǎn)品物流發(fā)展現(xiàn)狀的探究 物流管理專業(yè)
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)課件【全冊(cè)】
- 隱患排查治理工作方案
- 七年級(jí)數(shù)學(xué)上冊(cè)專題18 一元一次方程有整數(shù)解(解析版)
評(píng)論
0/150
提交評(píng)論