數(shù)據(jù)庫訪問技術(shù)課件_第1頁
數(shù)據(jù)庫訪問技術(shù)課件_第2頁
數(shù)據(jù)庫訪問技術(shù)課件_第3頁
數(shù)據(jù)庫訪問技術(shù)課件_第4頁
數(shù)據(jù)庫訪問技術(shù)課件_第5頁
已閱讀5頁,還剩185頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)知識點理解數(shù)據(jù)綁定技術(shù)掌握使用DataSet對象熟悉ADO.NET數(shù)據(jù)庫操作方法掌握DataGrid等數(shù)據(jù)顯示控件的方法和技巧2數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)知識點理解數(shù)據(jù)綁1知識點

理解數(shù)據(jù)綁定技術(shù)掌握使用DataSet對象熟悉ADO.NET數(shù)據(jù)庫操作方法掌握DataGrid等數(shù)據(jù)顯示控件的方法和技巧2知識點理解數(shù)據(jù)綁定技術(shù)26.1數(shù)據(jù)庫操作概述

數(shù)據(jù)訪問其實就是在應(yīng)用程序中獲取數(shù)據(jù)庫或者其他存儲設(shè)備上的數(shù)據(jù),并且可以對數(shù)據(jù)庫或者其他存儲設(shè)備上的數(shù)據(jù)進(jìn)行基本的數(shù)據(jù)操作,包括查詢數(shù)據(jù)、添加數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)等。36.1數(shù)據(jù)庫操作概述數(shù)據(jù)訪問其實就是在應(yīng)用程序中獲取數(shù)據(jù)庫數(shù)據(jù)庫訪問模型圖4數(shù)據(jù)庫訪問模型圖46.1數(shù)據(jù)庫操作概述數(shù)據(jù)訪問不單指訪問數(shù)據(jù)庫中的數(shù)據(jù),它還包括訪問其他格式的數(shù)據(jù),.NET(請確認(rèn)?)提供System.Data命名空間,該命名空間提供了訪問數(shù)據(jù)庫中數(shù)據(jù)的類和對象。System.Data命名空間主要由ADO.NET結(jié)構(gòu)的類組成,該類提供使開發(fā)者能夠生成有效地管理來自多個數(shù)據(jù)源的數(shù)據(jù)的組件。ADO.NET設(shè)計思想是從數(shù)據(jù)庫中讀取數(shù)據(jù)到內(nèi)存中,構(gòu)成內(nèi)存中的一個數(shù)據(jù)庫,

56.1數(shù)據(jù)庫操作概述數(shù)據(jù)訪問不單指訪問數(shù)據(jù)庫中的數(shù)據(jù),它還包666.1數(shù)據(jù)庫操作概述ADO.NET1.0版本主要提供兩種數(shù)據(jù)提供程序,分別是SQLServer.NET和OLEDB.NET數(shù)據(jù)提供程序。而ADO.NET1.1提供4種數(shù)據(jù)提供程序,除了1.0提供的兩種之外,還包括OracleDB.NET數(shù)據(jù)提供程序和ODBC.NET數(shù)據(jù)提供程序。數(shù)據(jù)提供程序訪問對象SQLServer.NET主要訪問SQLServer2000及以上版本OLEDB.NET主要訪問SQLServer7.0及以下和其他數(shù)據(jù)庫OracleDB.NET主要訪問Oracle8i、Oracle9i及以上的版本ODBC.NET主要訪問ODBC數(shù)據(jù)源76.1數(shù)據(jù)庫操作概述ADO.NET1.0版本主要提供兩種數(shù)對象屬性Connection對象建立與特定數(shù)據(jù)源的連接Command對象對數(shù)據(jù)源執(zhí)行命令,公開Parameters,并且可以從Connection在Transaction的范圍內(nèi)執(zhí)行DataReader對象從數(shù)據(jù)源中讀取只進(jìn)且只讀的數(shù)據(jù)流DataAdapter對象用數(shù)據(jù)源填充DataSet并解析更新,DataAdapter是數(shù)據(jù)提供程序與DataSet的接口.NET數(shù)據(jù)提供程序的核心對象8對象屬性Connection對象建立與特定數(shù)據(jù)源的連接Com6.2結(jié)構(gòu)化查詢語句——SQL

SELECT查詢SELECT查詢是SQL語言的核心,在數(shù)據(jù)庫應(yīng)用中,查詢是最常用的操作,同時還是數(shù)據(jù)庫的其他操作的基礎(chǔ)。

1、SELECT語法

SELECT[DISTINCT][別名.]字段名或表達(dá)式[AS列標(biāo)題]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][ORDERBYorder_expression[ASC/DESC]]96.2結(jié)構(gòu)化查詢語句——SQLSELECT查詢1、SELE6.2結(jié)構(gòu)化查詢語句——SQL常用聚合函數(shù)對表進(jìn)行檢索時,經(jīng)常需要將結(jié)果進(jìn)行匯總或計算。例如:統(tǒng)計總銷售額,統(tǒng)計平均年齡等。聚合函數(shù)用于計算機(jī)表中數(shù)據(jù),返回單個計算機(jī)結(jié)果。常用的聚合函數(shù)有:

AVG:求組中值的平均值。COUNT:求組中項數(shù),返回int類型的整數(shù)。MAX:求最大值MIN:求最小值。SUM:返回表達(dá)式中所有值的和。VAR:返回給定表達(dá)式中所有值的統(tǒng)計方差例6-1106.2結(jié)構(gòu)化查詢語句——SQL常用聚合函數(shù)106.2結(jié)構(gòu)化查詢語句——SQL數(shù)據(jù)更新

插入數(shù)據(jù)語句(INSERT):INSERT語句主要用于向數(shù)據(jù)庫的表或視圖中插入一條新記錄。語法為:INSERTINTO表名(字段列表)VALUES(字段值列表)116.2結(jié)構(gòu)化查詢語句——SQL數(shù)據(jù)更新116.2結(jié)構(gòu)化查詢語句——SQL刪除數(shù)據(jù)語句(DELETE)

DELETE用來從一個或多個表中刪除記錄。語法為:DELETEFROM表名[WHERE刪除條件]

126.2結(jié)構(gòu)化查詢語句——SQL刪除數(shù)據(jù)語句(DELETE)6.2結(jié)構(gòu)化查詢語句——SQL更新數(shù)據(jù)語句(UPDATE)

UPDATE用于更新滿足條件的某個記錄的一個或多個字段。語法為:UPDATE表名SET字段名1=新字段值,[字段名1=新字段值…]WHERE更新條件

136.2結(jié)構(gòu)化查詢語句——SQL更新數(shù)據(jù)語句(UPDATE)6.3Connection對象

OLEDbConnection的使用

使用ADO.NET連接到OLEDB數(shù)據(jù)源上需要使用OLEDBConnection對象。建立一個Connection對象的代碼是:OleDbConnectionmyconnection=newOleDbConnection(ConnectionString)

146.3Connection對象OLEDbConnectiOLEDbConnection的使用ConnectionString的主要屬性Provider屬性:數(shù)據(jù)源的程序提供者。例如:Access的提供者是Microsoft.Jet.OLEDB.4.0。DataSource屬性:數(shù)據(jù)庫的存放位置。UserID屬性:數(shù)據(jù)庫登錄的用戶名。Pwd屬性:用來設(shè)置登錄數(shù)據(jù)庫的密碼。ConnectionTimeout屬性:獲取在嘗試建立連接時終止嘗試并生成錯誤之前所等待的時間(以秒為單位),默認(rèn)值為15秒。值為0表示沒有對等待時間進(jìn)行設(shè)置,而不是表示沒有等待時間。Mode屬性:在設(shè)定連接數(shù)據(jù)庫前,連接的更改數(shù)據(jù)許可權(quán)(高級選項)15OLEDbConnection的使用ConnectionSt例如一個連接Access數(shù)據(jù)庫的連接語句代碼如下:Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\Database\1.mdb除了ConnectionString屬性之外,OLEDbConnection還有open和close這兩個常用方法,分別表示數(shù)據(jù)庫的打開和關(guān)閉。以下是一個如何創(chuàng)建和打開與OLEDB數(shù)據(jù)源的連接:OleDbconnectionmyconn=newOledbconnection(“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\database\1.mdb”);Myconn.open();16例如一個連接Access數(shù)據(jù)庫的連接語句代碼如下:166.3Connection對象除了編寫代碼外,在VisualStudio.NET提供了可視化的操作數(shù)據(jù)庫連接。(1)打開VisualStudio.NET,切換工具箱到“數(shù)據(jù)”選項卡,選擇OLEDbConnection,并拖放到WebForm1窗體上,默認(rèn)對象名字為OLEDbConnection1。(2)選中OLEDbConnection1,在其屬性頁上單擊ConnectionString右邊的空白,在空白處將出現(xiàn)一個下拉箭頭,選擇“<新建連接…>”出現(xiàn)“數(shù)據(jù)連接屬性”對話框。176.3Connection對象除了編寫代碼外,在Visua18186.3Connection對象(3)默認(rèn)情況下,數(shù)據(jù)連接顯示的界面是SQL數(shù)據(jù)庫連接,由于此處連接的是Access數(shù)據(jù)庫,所以首先需要在“提供程序”選項卡中,選擇MicrosoftJet4.0OLEDBProvider,這是Access使用的驅(qū)動程序(即ACCESS的Provider)(4)選擇后單擊“下一步”按鈕(或直接切換到“連接”選項卡),在“選擇或輸入數(shù)據(jù)庫名稱”文本框中,選擇需要連接的數(shù)據(jù)庫位置和名稱。默認(rèn)用戶名為Admin,密碼為空,如果用其他用戶名和密碼登錄,可以在“輸入數(shù)據(jù)庫登錄信息”欄中輸入用戶名和密碼。設(shè)置完畢后,可以單擊右下部的“測試連接”測試數(shù)據(jù)庫是否已經(jīng)正確連接。196.3Connection對象(3)默認(rèn)情況下,數(shù)據(jù)連接顯2020連接好數(shù)據(jù)庫后,可以在VisualStudio.NET里直接觀看數(shù)據(jù)庫中的內(nèi)容。打開“服務(wù)資源管理器”(“視圖”菜單中),雙擊連接的表,依次展開各個分支,可以顯示表、視圖、存儲過程等

21連接好數(shù)據(jù)庫后,可以在VisualStudio.NET里直22226.3Connection對象SqlConnection的使用SQLServer.NET數(shù)據(jù)提供程序使用SqlConnection對象提供了與MicrosoftSQLServer版本7.0或更高版本的連接。建立一個Connection連接的代碼為:SqlConnectionconn=newSqlConnection(“DataSource=localhost;IntegratedSecurity=SSPI;;InitialCatalog=EXF_DB”);Conn.open();

236.3Connection對象SqlConnection的現(xiàn)在有兩種方式可以連接到數(shù)據(jù)庫:集成Windows的驗證登錄數(shù)據(jù)庫:ConnectionString=”server=(local);database=EXF_DB;Trusted_Connection=yes”使用已知用戶名和密碼驗證登錄數(shù)據(jù)庫,如上例:24現(xiàn)在有兩種方式可以連接到數(shù)據(jù)庫:246.3Connection對象SqlConnection類的屬性和方法SqlConnection類常見屬性

ConnectionString屬性:設(shè)置連接的SQL服務(wù)器。前面已經(jīng)多次用到和講解。ConnectionTimeout屬性:如果第一次不能連接,SqlConnection會嘗試再次進(jìn)行連接,為了防止一直在連接的操作,ConnectionTimeout屬性就是用來限制連接的時間,超出該時間則提示連接錯誤,其默認(rèn)值為15秒。PacketSize屬性:該屬性設(shè)置SQLServer通信時網(wǎng)絡(luò)包的大小。State屬性:獲取當(dāng)前數(shù)據(jù)庫連接的狀態(tài)。256.3Connection對象SqlConnection類6.3Connection對象SqlConnection類的屬性和方法SqlConnection類常見方法

Open:使用ConnectionString所指定的屬性打開數(shù)據(jù)庫連接,這是數(shù)據(jù)庫操作的第一步。Close:關(guān)閉與數(shù)據(jù)庫的連接,這是關(guān)閉任何打開連接的首選方法。每次用完Connection后都必須將其關(guān)閉,可以使用close或dispose方法實現(xiàn)。Dispose:釋放由Component占用的資源。266.3Connection對象SqlConnection類6.4在ASP.NET中存取數(shù)據(jù)

Command對象

SqlCommand常用屬性和方法CommandText屬性:用于設(shè)置SqlCommand執(zhí)行的SQL語句,可以是任何合法的SQL語句(包括INSERT、UPDATE、SELECT等)。除了可以執(zhí)行SQL語句外,當(dāng)CommandType設(shè)置為存儲過程時,CommandText的值就是存儲過程的名稱。CommandType屬性:用于設(shè)置SqlCommand如何解析CommandText的值。它的值是枚舉型,可以是SQL文本、存儲過程或表。將CommandType賦值時要利用枚舉賦值。如將CommandType賦值為存儲過程的代碼為:Mycommand.CommandType=CommandType.StoreProcedure;

276.4在ASP.NET中存取數(shù)據(jù)Command對象276.4在ASP.NET中存取數(shù)據(jù)

Command對象

SqlCommand常用屬性和方法Connection屬性:用于連接數(shù)據(jù)庫SqlConnection對象的值。當(dāng)使用SqlConnection連接數(shù)據(jù)庫時只是對西說明了已經(jīng)連接了數(shù)據(jù)庫,但當(dāng)用SqlCommand執(zhí)行時還需要用Connection屬性指定到底是連接了哪一個數(shù)據(jù)庫。CommandTimeout屬性:用于設(shè)置從第一次執(zhí)行命令開始,需要執(zhí)行多久才停止。默認(rèn)值為30秒。Parameters屬性:在執(zhí)行SQL語句中需要的參數(shù)設(shè)置

286.4在ASP.NET中存取數(shù)據(jù)Command對象28成員名說明TextSQL文本命令,默認(rèn)值。CommandText設(shè)置為SQL語句StoredProcedure存儲過程。CommandText設(shè)置為存儲過程的名稱TableDirect表。CommandText設(shè)置為表的名稱CommandType取值范圍和意義29成員名說明TextSQL文本命令,默認(rèn)值。CommandTeCommand對象常見的構(gòu)造函數(shù)和方法

SqlCommand構(gòu)造函數(shù)是初始化SqlCommand對象,它有3種方法重載。也就是有3種方法可以定義Command對象。PublicSqlCommand(stringcmd,SqlConnectionconn);用cmd初始化CommandText的值,用conn初始化Connection的屬性值。PublicSqlCommand(string);用string字符串的內(nèi)容初始化CommandText的值,而Connection的屬性值為空。PublicSqlCommand();初始化CommandText的值和初始化CommandText的值都為空。30Command對象常見的構(gòu)造函數(shù)和方法30比較如下的三種代碼,可以看出它們執(zhí)行的功能都是相同的。Stringmycmd=”SELECT*FROMgoods”;Stringmyconn=”integratedsecurity=SSPI;datasource=(local);initialcatalog=SPXS”;//方法一:SqlCommandsqlcmd=newSqlCommand(mycmd,newSqlConnection(myconn));//方法二:SqlCommandsqlcmd=newSqlCommand(mycmd);SqlConnectionsqlconn=newSqlConnection(myconn);Sqlcmd.Connection=sqlconn;//方法三:SqlCommandsqlcmd=newSqlCommand();SqlConnectionsqlconn=newSqlConnection(myconn);sqlcmd.CommandText=sqlcmd;sqlcmd.Connection=sqlconn;31比較如下的三種代碼,可以看出它們執(zhí)行的功能都是相同的。31還有一種更常用的表示方法為:Stringmycmd=”SELECT*FROMgoods”;Stringmyconn=”integratedsecurity=SSPI;datasource=localhost;initialcatalog=SPXS”;SqlConnectionsqlconn=newSqlConnection(myconn);SqlCommandsqlcmd=newSqlCommand(mycmd,myconn);

32還有一種更常用的表示方法為:32Command對象在VS.NET的環(huán)境中可視化地生成SQL語句。

(1)按照6.3.2節(jié)中的步驟建立一個sqlconnection1對象,連接SQLServer服務(wù)器中名為SPXS的數(shù)據(jù)庫。(2)在“數(shù)據(jù)”工具箱中找到SqlCommand控件,并把它拖放到窗體上,此時可以在窗體下部看到名為sqlCommand1的SqlCommand控件。(3)在sqlcommand控件的“屬性”中有一個Connection屬性,如圖6-10所示,該屬性可以設(shè)置SQL具體執(zhí)行哪個數(shù)據(jù)庫。選擇“現(xiàn)有數(shù)據(jù)庫”中sqlconnection1。如果沒有第一步,也可以在這里“新建”建立一個新的連接。(4)在CommandText中,把光標(biāo)定位在CommandText上時,在右邊文本控件中出現(xiàn)一個“…”按鈕,單擊它將出現(xiàn)“查詢生成器”窗口,同時還彈出“添加表”對話框,如圖6-11所示。在“添加表”對話框“表”選項卡中列出了SQL數(shù)據(jù)庫中可用的表,在“視圖”和“函數(shù)”選項卡中列出了可用的視圖或者函數(shù)。(5)選中某個表,單擊“添加”按鈕,可以添加到查詢生成器中,同時可以完成SQL語句的制定。33Command對象在VS.NET的環(huán)境中可視化地生成SQL語3434Command對象SqlCommand的方法:主要是執(zhí)行SQL語句ExecuteReader()方法

例6-2執(zhí)行CommandText指定的SQL語句或存儲過程名,將執(zhí)行結(jié)果返回到SqlDataReader對象的數(shù)據(jù)集中。它的聲明方式是:PublicSqlDataReaderExecuteReader();以下是常見的使用模式:SqlConnectionmyconn=newSqlconnection(myConnstring);SqlCommandmycommand=newSqlCommand(SQL,myconn);Myconn.Open();SqlDataReadermyReader=myCommand.ExecuteReader(CommandBehavior.CloseConn);35Command對象SqlCommand的方法:主要是執(zhí)行SQCommand對象ExecuteNonQuery()方法

該方法主要執(zhí)行UPDATE、INSERT或DELETE這樣的SQL語句,對于UPDATE、INSERT和DELETE語句,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行修改,返回值為該命令所影響的行數(shù)。對于SELECT語句,返回值為-1。如果發(fā)生回滾,返回值也為-1。36Command對象ExecuteNonQuery()方法3Command對象ExecuteScalar()方法該方法主要返回結(jié)果集中第一行的第一列,由于它只能返回一個值,通常可以利用它來獲取聚合值。例如:購物中共消費(fèi)的金額,共購買的商品總數(shù),購買者的平均年齡等。

37Command對象ExecuteScalar()方法37Command對象ExecuteXmlReader()方法該方法返回XmlReader對象,它的使用取決于SQL語句的編寫。當(dāng)然,有的時候需要直接使用數(shù)據(jù)命令對數(shù)據(jù)集執(zhí)行命令,或執(zhí)行的SQL語句中的元素是從客戶端中的表中獲取,這樣執(zhí)行SQL語句或存儲過程常常需要帶參數(shù)。例如,需要參數(shù)的簡單“更新(UPDATE)”語句可為:UPDATEsalesSETAmount=@amount,Salestime=@timeWHERE(salesID=@id)38Command對象ExecuteXmlReader()方法3Command對象Parameters參數(shù)集合

(例6-3)在上段代碼中,@amount,@time,@id都是命名參數(shù)。在執(zhí)行語句時,必須為這些參數(shù)提供值。這些參數(shù)都是通過設(shè)置參數(shù)對象來實現(xiàn)的。數(shù)據(jù)命令支持Parameters集合,它包含OleDbParameter類或SqlParameter類對象。對于需要傳遞的每個參數(shù),集合均有一個對應(yīng)的參數(shù)對象。39Command對象Parameters參數(shù)集合(例6-3)Command對象Parameters參數(shù)集合

Parameter對象可以使用Parameter構(gòu)造函數(shù)來創(chuàng)建,或通過調(diào)用Command的Parameters集合的Add方法來創(chuàng)建。SqlParameter類對象的屬性有以下一些:

ParameterName屬性:該屬性設(shè)置或獲取SqlParameter參數(shù)名。DbType屬性:定義SQL參數(shù)的類型,其取值為SqlDbType枚舉值。Value屬性:用來設(shè)置或取得SqlParameter的參數(shù)值。Direction屬性:獲取或設(shè)置一個值,該值指示參數(shù)是只可輸入、只可輸出、雙向還是存儲過程返回值等。取值范圍是ParameterDirection枚舉類型。如表6-8所示,列出了枚舉值及說明。40Command對象Parameters參數(shù)集合40枚舉名稱說明Input參數(shù)是輸入?yún)?shù)InputOutput參數(shù)既能輸入、也能輸出Output參數(shù)是輸出參數(shù)ReturnValue參數(shù)表示諸如存儲過程、內(nèi)置函數(shù)或用戶定義函數(shù)之類的操作的返回ParameterDirection枚舉值及說明41枚舉名稱說明Input參數(shù)是輸入?yún)?shù)InputOutput參Command對象datareader對象

數(shù)據(jù)庫中的數(shù)據(jù)。一種是使用DataReader逐行地從數(shù)據(jù)源獲得數(shù)據(jù)放進(jìn)緩沖區(qū)并進(jìn)行處理;二是使用DataSet對象來將數(shù)據(jù)放到內(nèi)存中進(jìn)行處理。使用DataReader對象來顯示數(shù)據(jù),從數(shù)據(jù)庫中檢索只讀/只進(jìn)的數(shù)據(jù)流,當(dāng)使用Command對象的ExecuteReader方法時,返回的就是DataReader類型,查詢結(jié)果在查詢執(zhí)行時返回,并存儲在客戶端的網(wǎng)絡(luò)緩沖區(qū)中,直到使用DataReader的Read方法對它們發(fā)出請求。這種方法一次只在內(nèi)存中存儲一行,從而降低了系統(tǒng)開銷。DataReader和數(shù)據(jù)源類型緊密連接,所以它對應(yīng)也有兩種類型——OleDbDataReader類和SqlDataReader類。42Command對象datareader對象42Command對象SqlDataReader的使用

定義一個SqlDataReader對象ProtectedSystem.Data.Sqlclient.SqlDataReadersqlDataReader1創(chuàng)建SqlCommand對象實例后,可以調(diào)用Command.ExecuteReader方法從數(shù)據(jù)源中檢索行,然后把值賦給sqlDataReader1。sqlDataReader1=sqlCommand1.ExecuteReader();43Command對象SqlDataReader的使用43Command對象SqlDataReader的使用

隨后調(diào)用sqlDataReader1的Read方法從查詢的結(jié)果中獲取行。Read方法用于獲取一行數(shù)據(jù)記錄,并將隱含的指針向后移一步。Read方法返回一個布爾值,可以通過這個值判斷是否是結(jié)果集的最后一條記錄。通常需要while語句來循環(huán)讀取?;灸J绞牵?/p>

While(sqlDataReader1.Read()){….}44Command對象SqlDataReader的使用44Command對象SqlDataReader主要屬性和方法FiledCount屬性:顯示當(dāng)前操作記錄的字段總和。IsClosed屬性:判斷DataReader對象是否已經(jīng)關(guān)閉。Close方法:關(guān)閉DataReader對象。GetString方法:以String類型返回指定列中值。GetValue方法:以自身的類型返回指定列中值。GetValues方法:返回當(dāng)前記錄所有字段集合。Read方法:將“光標(biāo)”指向DataReader對象的下一個記錄。RecordsAffected方法:表示已經(jīng)更改、插入或刪除的行數(shù),如果沒有任何行受影響則返回0,-1表示SELECT語句。

45Command對象SqlDataReader主要屬性和方法4Get方法適用數(shù)據(jù)類型GetInt16/GetInt32/GetInt64對應(yīng)于shot/int/longGetDouble/GetFloat/GetDecimal對應(yīng)于double/float/decimalGetDateTimeDataTime對象GetString對應(yīng)VarcharGetBooleanBoolean常見的Get方法SQL數(shù)據(jù)類型定義的對照表

在建立數(shù)據(jù)庫時需要定義每一列的數(shù)據(jù)類型,同樣SqlDataReader提供了多個Get方法讀取相應(yīng)的類型。(例對比例6-3)46Get方法適用數(shù)據(jù)類型GetInt16/GetInt32/G6.4DataSetDataSet是數(shù)據(jù)的一種內(nèi)存駐留表示形式,無論它包含的數(shù)據(jù)來自什么數(shù)據(jù)源,它都會提供一致的關(guān)系編程模型。一個DataSet表示整個數(shù)據(jù)集,其中包含對數(shù)據(jù)進(jìn)行包含、排序和約束的表以及表間的關(guān)系。DataSet在處理數(shù)據(jù)時,采用了新的分層機(jī)制,一方面,它把數(shù)據(jù)庫中的數(shù)據(jù)通過DataAdapter對象放到內(nèi)存中,另一方面,它允許瀏覽器通過DataGrid等控件讀取其中的數(shù)據(jù)進(jìn)行顯示。正是這種分離設(shè)計思維,使得DataSet在數(shù)據(jù)處理中的地位非常重要。

476.4DataSetDataSet是數(shù)據(jù)的一種內(nèi)存駐留表示使用DataSet的方法有若干種,這些方法可以單獨(dú)應(yīng)用,也可以結(jié)合使用。例如:在DataSet中以編程形式創(chuàng)建DataTables、DataRelations和Constraints并使用數(shù)據(jù)填充這些表。通過DataAdapter用現(xiàn)在關(guān)系數(shù)據(jù)源中的數(shù)據(jù)表填充DataSet

6.4DataSet48使用DataSet的方法有若干種,這些方法可以單獨(dú)應(yīng)用,也可6.4DataSet使用DataSet

Dataset屬性:屬性說明CaseSensitive設(shè)定DataTable對象中的字符串比較是否區(qū)分大小寫Container獲取組件的容器DataSetName獲取或設(shè)置當(dāng)前DataSet的名稱Relations獲取用于將表鏈接起來并允許從父表瀏覽到子表的關(guān)系的集合Tables獲取包含在DataSet中的表的集合496.4DataSet使用DataSet屬性說明CaseS使用DataSetTable屬性屬性說明ChildRelations獲取此DataTables的子關(guān)系的集合Columns獲取屬于該表的列的集合Constraints獲取由該表維護(hù)的約束的集合DataSet獲取該表所屬的DataSetPrimaryKey獲取或設(shè)置充當(dāng)數(shù)據(jù)表主鍵的列的數(shù)組Rows獲取屬于該表的行的集合TableName獲取或設(shè)置DataTable的名稱50使用DataSetTable屬性屬性說明ChildRelat使用DataSetDataSet常用方法方法屬性Clear移除所有表中的行來清除任何數(shù)據(jù)的DataSetCopy復(fù)制該DataSet的數(shù)據(jù)和結(jié)構(gòu)GetXml返回存儲在DataSet中的數(shù)據(jù)的XML表示形式Reset將DataSet重置為初始狀態(tài)WriteXml從DataSet寫XML數(shù)據(jù),還可以選擇寫架構(gòu)以編程形式創(chuàng)建DataTable,必須先通過將DataColumn對象添加到DataColumnCollection中定義其架構(gòu);若要向DataTable中添加行,必須先使用NewRow方法返回新的DataRow對象。DataTable可存儲的最大行數(shù)是16777216。51使用DataSetDataSet常用方法方法屬性Clear移使用DataSet數(shù)據(jù)列DataColumn:DataColumn表示DataTable中列的架構(gòu),通過向DataColumnCollection中添加一個或多個DataColumn對象來生成這個架構(gòu)。

AllowDBNull:指示對于屬于該表的行,此列中是否允許空值。Caption:列的標(biāo)題。ColumnName:獲取或設(shè)置DataColumnCollection中的列的名稱。DataType:該列的類型。DefaultValue:該列默認(rèn)值。MaxLength:該列的最大長度。ReadOnly:是否只讀。Table:該列所屬DataTable。Unique:每一行中的值是否必須惟一。52使用DataSet數(shù)據(jù)列DataColumn:DataCol使用DataSetDataColumn的集合是DataColumnCollection類,DataColumnCollection類提供了對列進(jìn)行一般的操作,DataColumnCollection類的常見的屬性和方法有

Count:獲取集合中元素的總數(shù)。IsReadOnly:指示列是否為只讀。Item:從集合中獲取指定的DataColumn。Add()方法:接受可選的ColumnName、DataType和Expression參數(shù),創(chuàng)建DataColumn對象并將其添加到DataColumnCollection中。Clear()方法:消除集合中的所有列IndexOff()方法:獲取按名稱指定的列的索引。

53使用DataSetDataColumn的集合是DataCol以下代碼完成在DataTable表sales中加入三列的操作:DataTabletable=newDataTable(“sales”);DataColumncol=table.Column.Add(“salesID”,typeof(String));col.AllowDBNull=false;col.Unique=true;table.Columns.Add(“Code”,typeof(String));table.Columns.Add(“Name”,typeof(String));54以下代碼完成在DataTable表sales中加入三列的操作使用DataSet數(shù)據(jù)行DataRow

:DataRow表示DataTable中的一行數(shù)據(jù)。使用DataRow對象定義的屬性和方法用于行的插入、刪除和更新DataTable中的值。常用屬性:Item:獲取或設(shè)置存儲在指定列中的數(shù)據(jù)ItemArray:獲取或設(shè)置在指定行中的數(shù)據(jù)。RowState:獲取該行與DataRowCollection關(guān)系相關(guān)的當(dāng)前狀態(tài)。Table:獲取該行擁有其架構(gòu)的DataTable。Delete()方法:刪除DataRow。GetChildRows()方法:獲取DataRow的子行。IsNull()方法:指定列是否包含空值。

55使用DataSet數(shù)據(jù)行DataRow:DataRow表示使用DataSetDataRowCollection類常見的屬性和方法

AcceptChanges()方法:提交自上次調(diào)用AcceptChanges以來對該行進(jìn)行的所有更改。Count:獲取集合中的元素的總數(shù)。IsReadOnly:指示列是否為只讀。Item:從集合中獲取指定的DataColumn。Add()方法:將DataRow對象添加到DataRowCollection中。Clear()方法:消除所有行的集合。Find:獲取指定的DataRow。Remove:從集合中移除指定的DataRow。56使用DataSetDataRowCollection類常見的使用DataSet創(chuàng)建一個新的DataRow:使用DataTable對象的NewRow方法創(chuàng)建新的DataRow之后,使用Add方法將新的DataRow添加到DataRowCollection中。最后,調(diào)用DataTable對象的AcceptChanges方法確認(rèn)是否已添加。57使用DataSet創(chuàng)建一個新的DataRow:使用Data以下代碼是將5行數(shù)據(jù)添加到DataTable對象中。DataTabletable1=newtable();…//省略定義表的架構(gòu)的代碼DataRowrow1;For(inti=0;i<=4;i++){row1=table1.NewRow();row1[0]=i;row1[1]=”salesID”+i.ToString();table1.row.Add(row1);}

例6-458以下代碼是將5行數(shù)據(jù)添加到DataTable對象中。586.4DataSet表間關(guān)系DataRelation

(例6-5)一個數(shù)據(jù)集可以包含多個表,包括相互之間存在關(guān)系的表(即有公共鍵字段的表)。要表現(xiàn)這些表之間的關(guān)系可以使用DataRelation對象。DataRelation對象可以執(zhí)行以下幾種(請確認(rèn)是兩種還是三種?)功能:可以使的與正使用的記錄有相關(guān)關(guān)系的記錄可用(語意不明)。如果在父記錄中,它提供子記錄;如果使用子記錄,它提供父記錄??蓮?qiáng)制約束的引用完整性。如果數(shù)據(jù)集中的表有邏輯關(guān)系,則DataRelation對象可使另一個表中相關(guān)的記錄供開發(fā)者使用。

596.4DataSet表間關(guān)系DataRelation(例6.4DataSet使用數(shù)據(jù)適配器填充DataSet填充DataSet的方法還有一種是使用DataAdapter對象。該對象可以提供從數(shù)據(jù)源填充數(shù)據(jù)集和從數(shù)據(jù)集更新數(shù)據(jù)源的操作。

606.4DataSet使用數(shù)據(jù)適配器填充DataSet60使用數(shù)據(jù)適配器填充DataSet填充數(shù)據(jù)集

當(dāng)DataSet是表的集合,在DataAdapter類中提供了一個重要的屬性SelectCommand和一個重要的方法Fill來完成數(shù)據(jù)源到DataSet的填充。SelectCommand從數(shù)據(jù)源中檢索數(shù)據(jù),F(xiàn)ill方法使用DataAdapter的SelectCommand屬性的結(jié)果來填充DataSet。Fill將要填充的數(shù)據(jù)放到DataSet對象中的DataTable表中。

61使用數(shù)據(jù)適配器填充DataSet填充數(shù)據(jù)集61使用數(shù)據(jù)適配器填充DataSet定義sqlDataAdapter(例)PublicSqlDataAdapter();PublicSqlDataAdapter(SqlCommand);PublicSqlDataAdapter(string,SqlConnection);PublicSqlDataAdapter(string,string);

62使用數(shù)據(jù)適配器填充DataSet定義sqlDataAdapt使用數(shù)據(jù)適配器填充DataSet定義了DataAdapter對象后,定義一個DataSet對象。代碼如下:DataSetds=newDataSet();SvqlCommandcmd=newSqlCommand(“SELECT*FROMgoods”);DataAdapter1.SelectCommand=cmd;DataAdapter.Fill(ds);在這段代碼中,執(zhí)行DataAdapter的Fill(ds)語句后,DataAdapter就把goods表中的所有數(shù)據(jù)填充到數(shù)據(jù)集ds的第一張表中,按默認(rèn)方式,系統(tǒng)將第一張表命名為Table0,將第二張表命名為Table1,依次類推。也可以在填充給ds中的表起一個別名,例如:DataAdapter1.Fill(ds,”cmd1”);63使用數(shù)據(jù)適配器填充DataSet定義了DataAdapter使用數(shù)據(jù)適配器填充DataSet填充數(shù)據(jù)集

當(dāng)DataSet數(shù)據(jù)集的表內(nèi)容更改后應(yīng)怎樣返回給SQL等數(shù)據(jù)庫呢?DataAdapter提供了InsertCommand、UpdateCommand和DeleteCommand以及一個Update方法來完成從數(shù)據(jù)集到數(shù)據(jù)庫的更新工作。

Update方法與Fill方法相似,Update方法以DataSet對象和可選的DataTable對象或DataTable的表名為參數(shù),將DataSet內(nèi)部的數(shù)據(jù)集更新以DataTable表名命名的數(shù)據(jù)庫。例如:DataAdapter1.Update(ds,”cmd1”);64使用數(shù)據(jù)適配器填充DataSet填充數(shù)據(jù)集64使用數(shù)據(jù)適配器填充DataSet數(shù)據(jù)的訪問(例6-6)使用DataAdapter填充數(shù)據(jù)集后,DataSet將以DataTable的格式存放數(shù)據(jù),可以利用前面介紹的DataTable類的特點訪問數(shù)據(jù)。另一種方法,可以使用顯示控件將數(shù)據(jù)進(jìn)行綁定顯示。

65使用數(shù)據(jù)適配器填充DataSet數(shù)據(jù)的訪問(例6-6)65使用數(shù)據(jù)適配器填充DataSetDataview類

DataView類提供了對DataTable的不同視圖。所謂視圖就是“虛表”,它允許以不同的角度顯示數(shù)據(jù)。一張表,按不同人的要求可以創(chuàng)建多個視圖。Dataview的屬性Count:獲取DataView中記錄的數(shù)量。Item:從指定的表獲取一行數(shù)據(jù)。RowFilter:獲取或設(shè)置用于篩選在DataView中查看哪些行的表達(dá)式。Sort:DataView的一個或多個排序列以及排序順序。Table:獲取或設(shè)置源DataTable。AddNew():添加新行到DataView中。66使用數(shù)據(jù)適配器填充DataSetDataview類666.6數(shù)據(jù)綁定控件——Repeater服務(wù)器控件

Repeater服務(wù)器控件概述(例6-7)Repeater控件是一個基本模板數(shù)據(jù)顯示控件,它允許通過為列表中顯示的每一項重復(fù)使用指定的模板來自定義布局,需要注意的是,該控件不能通過可視化編輯模板,沒有內(nèi)置的布局或樣式,所以該控件只能通過編程的方式顯式所有HTML布局、樣式和設(shè)置等。676.6數(shù)據(jù)綁定控件——Repeater服務(wù)器控件Repe模板名稱說明ItemTemplate定義列表中項目的內(nèi)容和布局。此模板為必選模板AlternatingItemTemplate若定義該模板,則它可以決定從0開始的奇數(shù)索引項的內(nèi)容和布局;若沒有定義該模板,則都使用ItemTemplate來覺得項目的內(nèi)容和布局SeparatorTemplate若定義該模板,則可以設(shè)計項與項之間的內(nèi)容;若未定義,則不呈現(xiàn)分隔符HeaderTemplate若定義該模板,則可以決定列表標(biāo)頭的內(nèi)容和布局;若沒有定義,則不呈現(xiàn)標(biāo)頭FooterTemplate若定義該模板,則可以決定列表注腳的內(nèi)容和布局;若沒有定義,則不呈現(xiàn)注腳Repeater模板的列表68模板名稱說明ItemTemplate定義列表中項目的內(nèi)容和布6.6數(shù)據(jù)綁定控件——Repeater服務(wù)器控件

Repeater服務(wù)器控件實例(例6-8)Repeater控件沒有內(nèi)置的選擇和編輯支持,用戶可以通過OnItemCommand事件處理從模板引發(fā)到該控件的事件。

696.6數(shù)據(jù)綁定控件——Repeater服務(wù)器控件Repe6.7數(shù)據(jù)綁定控件2——DataList服務(wù)器控件

DataList服務(wù)器控件概述DataList控件可以看作是Repeater的增強(qiáng)版,它也是通過模板來操作數(shù)據(jù)的,但模板類型增加了許多。706.7數(shù)據(jù)綁定控件2——DataList服務(wù)器控件Data模板說明ItemTemplate為數(shù)據(jù)源中的每行呈現(xiàn)一次HTML元素和控件AlternatingItemTemplate與Repeater中的該模板相同,主要用于創(chuàng)建不同的外觀SelectedItemTemplate當(dāng)用戶選擇DataList控件中的項時呈現(xiàn)的元素。比如使用背景色標(biāo)記該行,展開其他字段等EditItemTemplate當(dāng)項處于編輯模式時的布局,通常包括編輯控件,如TextBox控件HeaderTemplate和FooterTemplate在列表開始和結(jié)束處呈現(xiàn)文本或控件SeparatorTemplate與Repeater控件的該模板用法相同,呈現(xiàn)每項之間的元素,如<hr>等DataList的模板類型71模板說明ItemTemplate為數(shù)據(jù)源中的每行呈現(xiàn)一次HT事件說明OnItemCommand單擊DataList控件中的Button、ImageButton或LinkButton等按鈕控件時觸發(fā)的事件,該事件參數(shù)為DataListCommandEentArgs,可取值為:1)CommandArgument:獲取按鈕控件指定的選擇參數(shù);2)CommandName:獲取按鈕控件指定的命令名;3)CommandSource:獲取被單擊的按鈕對象;4)Item:獲取按鈕對象所在數(shù)據(jù)行,返回DataListItem對象OnCancelCommand單擊控件中的“取消“按鈕時觸發(fā)事件,參數(shù)與OnItemCommand相同OnEditCommand單擊控件中的“編輯“按鈕時觸發(fā)該事件,參數(shù)與OnItemCommand相同OnDeleteCommand單擊控件中的“刪除“按鈕時觸發(fā)該事件,參數(shù)與OnItemCommand相同OnUpdateCommand單擊控件中的“更新“按鈕時觸發(fā)該事件,參數(shù)與OnItemCommand相同DataList常用事件72事件說明OnItemCommand單擊DataList控件中6.7數(shù)據(jù)綁定控件——DataList控件服務(wù)器控件

DataList控件實例(例6-9)736.7數(shù)據(jù)綁定控件——DataList控件服務(wù)器控件Da6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

DataGrid服務(wù)器控件概述

DataGrid控件是一個功能強(qiáng)大的數(shù)據(jù)顯示和處理控件,也是使用頻率最高的一種數(shù)據(jù)顯示控件。它將數(shù)據(jù)源中的數(shù)據(jù)以表格(Table)形式顯示出來,其每一行用于顯示數(shù)據(jù)源中的一條記錄。默認(rèn)情況下,DataGrid以只讀模式顯示數(shù)據(jù),但DataGrid也能夠在運(yùn)行時自動在可編輯控件中顯示數(shù)據(jù)。DataGrid不但可以靈活地控制數(shù)據(jù)的顯示格式,包括設(shè)置表格的顯示特性、顯示和隱藏列等,還可以對數(shù)據(jù)進(jìn)行編輯,與其他數(shù)據(jù)顯示控件不同的是,它還可以提供數(shù)據(jù)排序和分頁顯示的功能。

746.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件Data6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

數(shù)據(jù)的基本顯示(例)在DataGrid中所使用的數(shù)據(jù)源一般是DataSet數(shù)據(jù)集中的表。對于DataGrid的數(shù)據(jù)顯示,可以通過代碼定義數(shù)據(jù)源,也可以通過可視化操作,來完成數(shù)據(jù)源的連接。在代碼設(shè)計中,首先利用DataSource屬性設(shè)置數(shù)據(jù)源,其次,利用DataBind()方法進(jìn)行數(shù)據(jù)的綁定。需要注意的是綁定的對象是DataSet數(shù)據(jù)集中的某一個表,而不是整個數(shù)據(jù)集。

756.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件數(shù)據(jù)的基6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

DataGrid服務(wù)器控件概述

DataGrid控件是一個功能強(qiáng)大的數(shù)據(jù)顯示和處理控件,也是使用頻率最高的一種數(shù)據(jù)顯示控件。它將數(shù)據(jù)源中的數(shù)據(jù)以表格(Table)形式顯示出來,其每一行用于顯示數(shù)據(jù)源中的一條記錄。默認(rèn)情況下,DataGrid以只讀模式顯示數(shù)據(jù),但DataGrid也能夠在運(yùn)行時自動在可編輯控件中顯示數(shù)據(jù)。DataGrid不但可以靈活地控制數(shù)據(jù)的顯示格式,包括設(shè)置表格的顯示特性、顯示和隱藏列等,還可以對數(shù)據(jù)進(jìn)行編輯,與其他數(shù)據(jù)顯示控件不同的是,它還可以提供數(shù)據(jù)排序和分頁顯示的功能。

766.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件Data6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

DataGrid服務(wù)器控件概述

數(shù)據(jù)源的連接也可以通過可視化界面來進(jìn)行操作,如果已經(jīng)通過可視化操作建立了Connection對象和DataAdapter對象,單擊可視化界面的“生成數(shù)據(jù)集”,在工具箱中選中“DataGrid”控件,在屬性窗口中,選中“屬性生成器”,在屬性生成器中進(jìn)行數(shù)據(jù)源的設(shè)定,在程序代碼中只需要引用DataBind()方法即可完成數(shù)據(jù)的綁定。

776.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件Data787879796.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

DataGrid服務(wù)器控件概述

數(shù)據(jù)源的連接也可以通過可視化界面來進(jìn)行操作,如果已經(jīng)通過可視化操作建立了Connection對象和DataAdapter對象,單擊可視化界面的“生成數(shù)據(jù)集”,在工具箱中選中“DataGrid”控件,在屬性窗口中,選中“屬性生成器”,在屬性生成器中進(jìn)行數(shù)據(jù)源的設(shè)定,在程序代碼中只需要引用DataBind()方法即可完成數(shù)據(jù)的綁定。

806.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件Data6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

DataGrid服務(wù)器控件概述

在DataGrid中,DataGrid的顯示可以有多種不同的模式,可以通過選擇“自動套用格式“進(jìn)行DataGrid樣式的選擇。816.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件DatDataGrid服務(wù)器控件

列綁定

DataGrid控件有個AutoGenerateColumns屬性,該屬性用來設(shè)定DataGrid控件是否可以自動產(chǎn)生列,默認(rèn)值為true,但在更多情況下,DataGrid并不需要將DataSet表中的所有字段全部顯示出來,這時,就可以將AutoGenerateColumns屬性設(shè)置為False,默認(rèn)情況下,系統(tǒng)將不會自動的產(chǎn)生列,由用戶自定義需要顯示的列,同樣,在某些條件下,有可能還要顯示在數(shù)據(jù)集中沒有的列(比如:編輯,刪除等)這也需要用戶自定義列名,這就需要用到DataGrid中的列綁定。82DataGrid服務(wù)器控件列綁定82列名稱說明BoundColumn綁定列,控制列的顯示順序和呈現(xiàn)方式HyperLinkColumn超鏈接列,給出HyperLink控件中的綁定數(shù)據(jù)ButtonColumn按鈕列,將用戶命令從行中表現(xiàn)在網(wǎng)頁中的事件處理程序TemplateColumn模板列,控制在列中呈現(xiàn)哪些控件EditCommandColumn編輯按鈕列,顯示“編輯“、”更新“、“取消”鏈接以響應(yīng)控件中EditItemIndex屬性的更改DataGrid列綁定83列名稱說明BoundColumn綁定列,控制列的顯示順序和呈6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

DataGrid服務(wù)器控件概述

數(shù)據(jù)源的連接也可以通過可視化界面來進(jìn)行操作,如果已經(jīng)通過可視化操作建立了Connection對象和DataAdapter對象,單擊可視化界面的“生成數(shù)據(jù)集”,在工具箱中選中“DataGrid”控件,在屬性窗口中,選中“屬性生成器”,在屬性生成器中進(jìn)行數(shù)據(jù)源的設(shè)定,在程序代碼中只需要引用DataBind()方法即可完成數(shù)據(jù)的綁定。

846.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件DataDataGrid服務(wù)器控件

綁定列(BoundColumn)

綁定列是最常見也是最簡單的一種列類型,DataGrid自動產(chǎn)生的列類型就是BoundColumn,綁定列顯示的樣式是最基本的文本格式。綁定列的基本格式為

<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”…><Columns><asp:BoundColumnHeaderText=”ID號”DataField=”ID”/><asp:BoundColumnHeaderText=”姓名”DataField=”Name”/></Columns></asp:DataGrid>85DataGrid服務(wù)器控件綁定列(BoundColumn)DataGrid服務(wù)器控件

超鏈接列(HyperLinkColumn)(例)超鏈接列就是允許設(shè)置一列為超鏈接,通過它建立超鏈接與數(shù)據(jù)源之間的聯(lián)系,但在實際運(yùn)用中需要靈活運(yùn)用。一般的超鏈接列的基本格式如下:<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”…><Columns><asp:HyperLinkColumnHeaderText=“綁定的字段名”DataTextField=”鏈接數(shù)據(jù)源字段”DataNavigateUrlField=”鏈接地址有關(guān)的數(shù)據(jù)源字段”DataNavigateUrlFormatString=”鏈接字符串格式”NavigateUrl=”鏈接地址”Text=”鏈接文本”></asp:HyperLinkColumn></Columns></asp:DataGrid>86DataGrid服務(wù)器控件超鏈接列(HyperLinkCoDataGrid服務(wù)器控件

按鈕列(ButtonColumn)可以像Button類控件一樣支持事件的處理。當(dāng)點擊按鈕后時會觸發(fā)OnItemCommand事件,基本格式如下:<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”O(jiān)nItemCommand=”BoundCommand”><Columns><asp:ButtonColumnHeaderText=”列頭”Text=“文本“CommandName=”按鈕名稱”ButtonType=”LinkButton/PushButton”/></Columns></asp:DataGrid>

87DataGrid服務(wù)器控件按鈕列(ButtonColumnDataGrid服務(wù)器控件

按鈕列(ButtonColumn)其中,ButtonType是設(shè)置Button的樣式,組要有按鈕類型(PushButton)和鏈接類型(LinkButton)兩種。CommandName是設(shè)置Button名稱,當(dāng)DataGrid有多個按鈕列時,使用這個來區(qū)分每一列按鈕。OnItemCommand設(shè)置單擊按鈕的處理代碼(與Repeater和DalaList的用法相同),處理代碼的格式一般為:VoidBoundCommand(Objectsender,DataGridCommandEventArgse){...}88DataGrid服務(wù)器控件按鈕列(ButtonColumnDataGrid服務(wù)器控件

模板列(TemplateColumn)

在模板列中可以隨意添加各種控件,還可以隨意控制控件的布局,它的ItemTemplate為正常模式的顯示,EditItemTemplate為編輯模式下的顯示。模板列的基本使用模式如下:<asp:DataGridid=”DataGrid1”runat=”server”AutoGenerateColumns=”false”><Columns><asp:TemplateColumn><ItemTemplate></ItemTemplate><EditItemTemplate></EditItemTemplate></asp:TemplateColumn> ..</Columns></asp:DataGrid>

89DataGrid服務(wù)器控件模板列(TemplateColuDataGrid服務(wù)器控件

編輯列(EditCommandColumn)

使用該列,可以對數(shù)據(jù)進(jìn)行編輯,首先使用EditItemIndex屬性,該屬性指示哪一行應(yīng)該是可編輯的。設(shè)置該屬性后,DataGird按該索引(從零開始)將行呈現(xiàn)為文本輸入框,而不是簡單的標(biāo)簽。默認(rèn)值為-1表示沒有行是可編輯的。當(dāng)確定哪行編輯后,EditCommandColumn列產(chǎn)生3個特殊事件:EditCommand、UpdateCommand、CancelCommand。

綜合例例6-1090DataGrid服務(wù)器控件編輯列(EditCommandC6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

排序(例)當(dāng)DataGrid的AllowSorting屬性設(shè)置為true時,它呈現(xiàn)將Sort命令激發(fā)回表中列標(biāo)頭的超鏈接。將DataGrid的OnSortCommand屬性設(shè)置為當(dāng)用戶單擊列鏈接時要調(diào)用的處理程序。列的名稱作為DataGridSortCommandEventArgs參數(shù)中的SortExpression屬性傳遞。該參數(shù)可用來設(shè)置綁定到DataView的Sort屬性。

916.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件排序(例例如,要對sales表中所有數(shù)據(jù)的顯示,當(dāng)單擊每列的列頭標(biāo)題時,都可以按照按標(biāo)題進(jìn)行排序。在構(gòu)造DataGrid時需要將AllowingPage設(shè)置為true,DataGird的描述為:<asp:DataGridid="DataGrid1"style="Z-INDEX:101;LEFT:80px;POSITION:absolute;TOP:56px"runat="server"Width="320px"Height="216px"AllowSorting="True"OnSortCommand="mygridsort"BorderColor="#999999"BorderStyle="None"BorderWidth="1px"BackColor="White"CellPadding="3"GridLines="Vertical"> </asp:DataGrid>在這段描述中,DataGrid默認(rèn)了自動生成列,并設(shè)定了排序事件名為“mygridsort”。當(dāng)點擊某一列時,通過e.SortExpression獲取單擊列的字段名,并將其作為參數(shù)設(shè)置給Source對象的Sort屬性

92例如,要對sales表中所有數(shù)據(jù)的顯示,當(dāng)單擊每列的列頭標(biāo)題6.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件

分頁(例)在其他許多Web動態(tài)技術(shù)中,要實現(xiàn)分頁的顯示是件很頭痛的事情,DataGrid控件內(nèi)建了自動分頁的功能,通過將AllowingPaging的屬性設(shè)置為true,同時設(shè)置OnPageIndexChanged事件處理程序即可完成分頁。當(dāng)啟動分頁功能時,頁面瀏覽按鈕顯示成“下一頁/上一頁”按鈕或數(shù)字按鈕。這個設(shè)置可以在窗體設(shè)計代碼中完成,也可以通過可視化操作完成。單擊某個頁面瀏覽按鈕時,將引發(fā)PageIndexChanged事件。用戶可以應(yīng)用自己的代碼處理此事件。最基本的邏輯是將CurrentPageIndex分配給事件參數(shù)的NewPageIndex屬性,然后重新綁定數(shù)據(jù)源。936.8數(shù)據(jù)綁定控件3——DataGrid服務(wù)器控件分頁(例6.9實戰(zhàn)檢驗

理論鞏固請說明數(shù)據(jù)庫的交互中主要有哪兩大類方法。什么是數(shù)據(jù)集?它的特點是什么?DataReader對象的特點是什么?三種常用的數(shù)據(jù)顯示控件是什么?它們各自的特點有哪些?理論鞏固利用本章所學(xué)內(nèi)容完成一個簡單的留言板,功能包括:用戶注冊。登錄后可以瀏覽所有留言??梢园l(fā)表新留言。留言板的管理(對用戶的添加和刪除、對留言的刪除和編輯等功能)。實現(xiàn)留言分頁查看的功能。946.9實戰(zhàn)檢驗理論鞏固94匯報結(jié)束謝謝大家!請各位批評指正匯報結(jié)束謝謝大家!請各位批評指正95數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)知識點理解數(shù)據(jù)綁定技術(shù)掌握使用DataSet對象熟悉ADO.NET數(shù)據(jù)庫操作方法掌握DataGrid等數(shù)據(jù)顯示控件的方法和技巧2數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)數(shù)據(jù)庫訪問技術(shù)知識點理解數(shù)據(jù)綁96知識點

理解數(shù)據(jù)綁定技術(shù)掌握使用DataSet對象熟悉ADO.NET數(shù)據(jù)庫操作方法掌握DataGrid等數(shù)據(jù)顯示控件的方法和技巧97知識點理解數(shù)據(jù)綁定技術(shù)26.1數(shù)據(jù)庫操作概述

數(shù)據(jù)訪問其實就是在應(yīng)用程序中獲取數(shù)據(jù)庫或者其他存儲設(shè)備上的數(shù)據(jù),并且可以對數(shù)據(jù)庫或者其他存儲設(shè)備上的數(shù)據(jù)進(jìn)行基本的數(shù)據(jù)操作,包括查詢數(shù)據(jù)、添加數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)等。986.1數(shù)據(jù)庫操作概述數(shù)據(jù)訪問其實就是在應(yīng)用程序中獲取數(shù)據(jù)庫數(shù)據(jù)庫訪問模型圖99數(shù)據(jù)庫訪問模型圖46.1數(shù)據(jù)庫操作概述數(shù)據(jù)訪問不單指訪問數(shù)據(jù)庫中的數(shù)據(jù),它還包括訪問其他格式的數(shù)據(jù),.NET(請確認(rèn)?)提供System.Data命名空間,該命名空間提供了訪問數(shù)據(jù)庫中數(shù)據(jù)的類和對象。System.Data命名空間主要由ADO.NET結(jié)構(gòu)的類組成,該類提供使開發(fā)者能夠生成有效地管理來自多個數(shù)據(jù)源的數(shù)據(jù)的組件。ADO.NET設(shè)計思想是從數(shù)據(jù)庫中讀取數(shù)據(jù)到內(nèi)存中,構(gòu)成內(nèi)存中的一個數(shù)據(jù)庫,

1006.1數(shù)據(jù)庫操作概述數(shù)據(jù)訪問不單指訪問數(shù)據(jù)庫中的數(shù)據(jù),它還包10166.1數(shù)據(jù)庫操作概述ADO.NET1.0版本主要提供兩種數(shù)據(jù)提供程序,分別是SQLServer.NET和OLEDB.NET數(shù)據(jù)提供程序。而ADO.NET1.1提供4種數(shù)據(jù)提供程序,除了1.0提供的兩種之外,還包括OracleDB.NET數(shù)據(jù)提供程序和ODBC.NET數(shù)據(jù)提供程序。數(shù)據(jù)提供程序訪問對象SQLServer.NET主要訪問SQLServer2000及以上版本OLEDB.NET主要訪問SQLServer7.0及以下和其他數(shù)據(jù)庫OracleDB.NET主要訪問Oracle8i、Oracle9i及以上的版本ODBC.NET主要訪問ODBC數(shù)據(jù)源1026.1數(shù)據(jù)庫操作概述ADO.NET1.0版本主要提供兩種數(shù)對象屬性Connection對象建立與特定數(shù)據(jù)源的連接Command對象對數(shù)據(jù)源執(zhí)行命令,公開Parameters,并且可以從Connection在Transaction的范圍內(nèi)執(zhí)行DataReader對象從數(shù)據(jù)源中讀取只進(jìn)且只讀的數(shù)據(jù)流DataAdapter對象用數(shù)據(jù)源填充DataSet并解析更新,DataAdapter是數(shù)據(jù)提供程序與DataSet的接口.NET數(shù)據(jù)提供程序的核心對象103對象屬性Connection對象建立與特定數(shù)據(jù)源的連接Com6.2結(jié)構(gòu)化查詢語句——SQL

SELECT查詢SELECT查詢是SQL語言的核心,在數(shù)據(jù)庫應(yīng)用中,查詢是最常用的操作,同時還是數(shù)據(jù)庫的其他操作的基礎(chǔ)。

1、SELECT語法

SELECT[DISTINCT][別名.]字段名或表達(dá)式[AS列標(biāo)題]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][ORDERBYorder_expression[ASC/DESC]]1046.2結(jié)構(gòu)化查詢語句——SQLSELECT查詢1、SELE6.2結(jié)構(gòu)化查詢語句——SQL常用聚合函數(shù)對表進(jìn)行檢索時,經(jīng)常需要將結(jié)果進(jìn)行匯總或計算。例如:統(tǒng)計總銷售額,統(tǒng)計平均年齡等。聚合函數(shù)用于計算機(jī)表中數(shù)據(jù),返回單個計算機(jī)結(jié)果。常用的聚合函數(shù)有:

AVG:求組中值的平均值。COUNT:求組中項數(shù),返回int類型的整數(shù)。MAX:求最大值MIN:求最小值。SUM:返回表達(dá)式中所有值的和。VAR:返回給定表達(dá)式中所有值的統(tǒng)計方差例6-11056.2結(jié)構(gòu)化查詢語句——SQL常用聚合函數(shù)106.2結(jié)構(gòu)化查詢語句——SQL數(shù)據(jù)更新

插入數(shù)據(jù)語句(INSERT):INSERT語句主要用于向數(shù)據(jù)庫的表或視圖中插入一條新記錄。語法為:INSERTINTO表名(字段列表)VALUES(字段值列表)1066.2結(jié)構(gòu)化查詢語句——SQL數(shù)據(jù)更新116.2結(jié)構(gòu)化查詢語句——SQL刪除數(shù)據(jù)語句(DELETE)

DELETE用來從一個或多個表中刪除記錄。語法為:DELETEFROM表名[WHERE刪除條件]

1076.2結(jié)構(gòu)化查詢語句——SQL刪除數(shù)據(jù)語句(DELETE)6.2結(jié)構(gòu)化查詢語句——SQL更新數(shù)據(jù)語句(UPDATE)

UPDATE用于更新滿足條件的某個記錄的一個或多個字段。語法為:UPDATE表名SET字段名1=新字段值,[字段名1=新字段值…]

溫馨提示

  • 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

提交評論