第六章 ADO-NET數(shù)據(jù)庫編程_第1頁
第六章 ADO-NET數(shù)據(jù)庫編程_第2頁
第六章 ADO-NET數(shù)據(jù)庫編程_第3頁
第六章 ADO-NET數(shù)據(jù)庫編程_第4頁
第六章 ADO-NET數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第6章章 ADO.NET數(shù)據(jù)庫編程數(shù)據(jù)庫編程 內(nèi)容提要n本章首先介紹本章首先介紹ADO.NET的結(jié)構(gòu)。的結(jié)構(gòu)。n詳細介紹詳細介紹ADO.NET的的Connection對象,對象,Command對象、對象、DataReader對象、對象、DataAdapter對象和對象和DataSet對象。對象。n介紹常用的數(shù)據(jù)源控件和數(shù)據(jù)綁定控件。介紹常用的數(shù)據(jù)源控件和數(shù)據(jù)綁定控件。網(wǎng)絡數(shù)據(jù)庫編程基礎n在.NET框架中,包含了自己的數(shù)據(jù)訪問技術(shù)ADO.NET。ADO.NET的名稱起源于ADO(ActiveX Data Objects)。nADO.NET包含一組托管的類使得Web應用程序可以連接數(shù)據(jù)源、執(zhí)行命

2、令以及管理非連接的數(shù)據(jù)。nASP.NET同樣使用服務器控件來進行數(shù)據(jù)處理。ASP.NET中提供兩類數(shù)據(jù)控件。一類是數(shù)據(jù)源(Data Source)控件。另一類是數(shù)據(jù)綁定(Data-bound)控件。6.1 ADO.NET的結(jié)構(gòu) nADO.NET有兩個核心組件:.NET數(shù)據(jù)提供程序和DataSet。.NET數(shù)據(jù)提供程序 n表6-1 .NET數(shù)據(jù)提供程序的四個核心對象 對象說明Connection建立與特定數(shù)據(jù)源的連接。Command對數(shù)據(jù)源執(zhí)行命令。DataReader從數(shù)據(jù)源中讀取只進且只讀的數(shù)據(jù)流。DataAdapter 用于將數(shù)據(jù)填充到 DataSet。SQL Server .NET 數(shù)據(jù)

3、提供程序 n對應SQL Server.NET的4個核心對象分別是:SqlConnection、SqlCommand、SqlDataReader和SqlDataAdapter。這4個對象包含在System.Data.SqlClient命名空間中,需要將這個命名空間引入到文件中。nSQL Server.NET數(shù)據(jù)提供程序?qū)QL Server數(shù)據(jù)庫的底層操作進行了封裝,可以更加快捷地訪問SQL Server數(shù)據(jù)庫。OLE DB .NET 數(shù)據(jù)提供程序 n對應OLE DB .NET的4個核心對象分別是:OleDbConnection、OleDbCommand、OleDbDataReader和OleD

4、bDataAdapter。這4個對象包含在System.Data.OleDb命名空間中,需要將這個命名空間引入到文件中。n目前主要用來訪問Access、Foxpro等簡單的數(shù)據(jù)源。Oracle DB .NET數(shù)據(jù)提供程序 n對應Oracle DB .NET的4個核心對象分別是:OracleConnection、OracleCommand、OracleDataReader和OracleDataAdapter。n這4個對象包含在System.Data.OracleClient命名空間中,需要將這個命名空間引入到文件中。ODBC.NET數(shù)據(jù)提供程序 n對應ODBC .NET的4個核心對象分別是:Od

5、bcConnection、OdbcCommand、OdbcDataReader和OdbcDataAdapter。這4個對象包含在System.Data.Odbc命名空間中,需要將這個命名空間引入到文件中。n通過ODBC建立的數(shù)據(jù)源都可以通過ODBC.NET數(shù)據(jù)提供程序訪問。DataSet對象簡介nDataSet是ADO.NET的核心組件,內(nèi)部用XML描述數(shù)據(jù),具有平臺無關(guān)性。nDataSet 包含一個或多個 DataTable對象的集合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及 DataTable 對象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息等組成。nDataSet通過DataAdapter對象從數(shù)據(jù)源得到數(shù)據(jù)

6、,DataAdapter是連接DataSet和數(shù)據(jù)庫的一個橋梁,因此命名為:“數(shù)據(jù)適配器”。Connection對象 n用于建立數(shù)據(jù)庫連接,常用方法有Open()和Close()。Data Source屬性用來獲取數(shù)據(jù)源的服務器名或文件名;Provider屬性用來指定數(shù)據(jù)庫驅(qū)動程序;ConnectionString屬性用來指定連接字符串。案例名稱:使用案例名稱:使用Connection對象對象 程序名稱:程序名稱:6-01.aspxvoidPage_Load(Objectsender,EventArgse)OleDbConnectionConn=newOleDbConnection();Con

7、n.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();使用使用Connection對象的構(gòu)造函數(shù)對象的構(gòu)造函數(shù)案例名稱:使用案例名稱:使用Connection對象的構(gòu)造函數(shù)對象的構(gòu)造函數(shù)程序名稱:程序名稱:6-02.aspxvoidPage_Load(Objectsender,EventArgse)OleDbConnectionConn;Conn=

8、newOleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();連接連接SQL Server數(shù)據(jù)庫的常用參數(shù)數(shù)據(jù)庫的常用參數(shù)參數(shù)名稱 參數(shù)說明Connection Timeout設置SqlConnection對象連接SQL Server數(shù)據(jù)庫的超時時間,單位為妙,若超時,則返回連接數(shù)據(jù)庫失敗。默認值15秒。Data Source要連接的SQL Server數(shù)

9、據(jù)庫服務器名稱。Server要連接的SQL Server數(shù)據(jù)庫服務器名稱。Addr要連接的SQL Server數(shù)據(jù)庫服務器的地址。User ID/uid設置登錄SQL Server數(shù)據(jù)庫的用戶帳號。Password/pwd設置登錄SQL Server數(shù)據(jù)庫的密碼。Initial Catalog設置要連接的數(shù)據(jù)庫名稱。Database設置要連接的數(shù)據(jù)庫名稱。使用使用Connection對象連接對象連接SQL Server數(shù)據(jù)庫數(shù)據(jù)庫案例名稱:使用案例名稱:使用Connection對象連接對象連接SQL Server數(shù)據(jù)庫數(shù)據(jù)庫程序名稱:程序名稱:6-03.aspxvoidPage_Load(Ob

10、jectsender,EventArgse)SqlConnectionConn;Conn=newSqlConnection(server=localhost;database=testdb;uid=sa;pwd=);/SQLServer身份驗證/Conn=newSqlConnection(DataSource=ZXG;IntegratedSecurity=true;InitialCatalog=testdb;);/Windows身份驗證Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();Command對象 n建立數(shù)據(jù)連接以后,

11、利用Command對象來執(zhí)行命令并從數(shù)據(jù)源返回結(jié)果。n常用方法: ExecuteReader()、 ExecuteScalar() 和ExecuteNonQuery()。 nCommand對象常用的構(gòu)造函數(shù)包括兩個參數(shù),1個是要執(zhí)行的SQL語句,另一個是已經(jīng)建立的Connnection對象,基本語法是:nOleDbCommand Comm=new OleDbCommand(select * from grade,Conn);ExecuteReader方法 n主要用來執(zhí)行基本SQL查詢語句,要求SQL返回記錄集。案例名稱:使用案例名稱:使用ExecuteRader方法方法程序名稱:程序名稱:6-

12、04.aspx voidPage_Load(Objectsender,EventArgse)OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);Conn.Open();OleDbCommandComm=newOleDbCommand(select*fromgrade,Conn);OleDbDataReaderdr=Comm.ExecuteReader();dg.DataSour

13、ce=dr;dg.DataBind();Conn.Close();案例名稱:使用案例名稱:使用Like子句實現(xiàn)模糊查詢子句實現(xiàn)模糊查詢程序名稱:程序名稱:6-05.aspxvoidsubmit_click(Objectsender,EventArgse)OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);Conn.Open();stringsql=select*fromgrad

14、e;if(mytext.Text!=)sql=select*fromgradewhere姓名like%+mytext.Text+%;Message.Text=sql;OleDbCommandComm=newOleDbCommand(sql,Conn);OleDbDataReaderdr=Comm.ExecuteReader();dg.DataSource=dr;dg.DataBind();Conn.Close();請輸入被查詢的人名關(guān)鍵字ExecuteScalar方法 n該方法返回單個值,從相關(guān)的查詢中返回第一行和第一列的值(Object 類型),一般用來執(zhí)行聚合函數(shù)。案例名稱:使用案例名稱:

15、使用ExecuteScalar方法方法程序名稱:程序名稱:6-06.aspx voidPage_Load(Objectsender,EventArgse)OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);Conn.Open();StringstrSQL=selectavg(數(shù)學)fromgrade;OleDbCommandComm=newOleDbCommand(strSQL

16、,Conn);Doubled=(Double)Comm.ExecuteScalar();Message.Text=所有人數(shù)學的平均成績?yōu)?d.ToString()+分;Conn.Close();ExecuteNonQuery方法 n用于執(zhí)行不需要返回結(jié)果的命令,并返回受影響的行數(shù)。案例名稱:使用案例名稱:使用ExecuteNonQuery方法執(zhí)行方法執(zhí)行Insert語句語句程序名稱:程序名稱:6-07.aspxvoidPage_Load(Objectsender,EventArgse)OleDbConnectionConn=newOleDbConnection();Conn.Connectio

17、nString=Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);Conn.Open();StringstrSQL=insertintograde(學號,姓名,數(shù)學)+values(99,小張,100);OleDbCommandComm=newOleDbCommand(strSQL,Conn);Comm.ExecuteNonQuery();Conn.Close();Response.Write(操作成功!);ADO.NET事務處理事務處理 n事務是一些事件的集合,執(zhí)行一條SQL語句可理解成一個事件。

18、nADO.NET使用Connection對象的BeginTransaction()方法來聲明事務開始,利用Transaction對象的Commit()方法來提交事務,利用Transaction對象的Rollback()方法來回滾事務。使用事務的基本格式使用事務的基本格式案例名稱:使用事務的基本格式程序名稱:6-08.aspxvoidPage_Load(Objectsender,EventArgse)OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+Da

19、taSource=+Server.MapPath(person.mdb);Conn.Open();OleDbCommandComm=newOleDbCommand();OleDbTransactionTrans;Trans=Conn.BeginTransaction();Comm.Connection=Conn;Comm.Transaction=Trans;tryComm.CommandText=UPDATEgradeSET數(shù)學=100WHERE姓名LIKE%周%;Comm.ExecuteNonQuery();Comm.CommandText=UPDATEgradeSET數(shù)學=60WHERE姓

20、名LIKE%張%;Comm.ExecuteNonQuery();Trans.Commit();Response.Write(事務執(zhí)行成功!);catch(Exceptionex)Trans.Rollback();Response.Write(出現(xiàn)錯誤,事務已經(jīng)回滾!);finallyConn.Close();DataReader對象 n取DataReader對象的數(shù)據(jù),有兩種方法:n1、通過和GridView等數(shù)據(jù)控件綁定,直接輸出,使用方法如程序6-04.aspx。n2、另一種方法是利用循環(huán)將其數(shù)據(jù)取出。 使用DataReader對象輸出數(shù)據(jù)案例名稱:使用案例名稱:使用DataReader對

21、象輸出數(shù)據(jù)對象輸出數(shù)據(jù)程序名稱:程序名稱:6-09.aspxprotected void Page_Load(object sender, EventArgs e) OleDbConnection Conn = new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0; + Data Source= + Server.MapPath(person.mdb); Conn.Open(); String strSQL = select * from grade; OleDbCommand Comm = new OleDbCommand(strSQL,

22、Conn); OleDbDataReader dr = Comm.ExecuteReader(); string html = ; html += ; html += 學號學號; html += 姓名姓名; html += 數(shù)學數(shù)學; html += ; try while (dr.Read() /讀出每一條記錄讀出每一條記錄 html += ; html += + dr學號學號.ToString() + ; html += + dr姓名姓名.ToString() + ; html += + dr數(shù)學數(shù)學.ToString() + ; html += ; html += ; catch (Ex

23、ception ex) Response.Write(ex.Message); finally dr.Close(); Conn.Close(); /關(guān)閉鏈接關(guān)閉鏈接 Response.Write(html); DataAdapter對象 nDataAdapter對象用于從數(shù)據(jù)源中獲取數(shù)據(jù),填充DataSet 中的表和約束,并將對DataSet的更改提交回數(shù)據(jù)源。nDataAdapter對象有4個重要屬性,即SelectCommand、InsertCommand、UpdateCommand、DeleteCommand,都是Command對象,其中SelectCommand用來執(zhí)行查詢,其他三個

24、用于執(zhí)行數(shù)據(jù)操作。n除了SelectCommand屬性,其他三個屬性都需使用“ExecuteNonQuery()”方法調(diào)用。使用DataAdapter對象的構(gòu)造方法案例名稱:使用案例名稱:使用DataAdapter對象構(gòu)造方法對象構(gòu)造方法程序名稱:程序名稱:6-10.aspxprotectedvoidPage_Load(Objectsender,EventArgse)OleDbConnectionConn=newOleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);str

25、ingsql=select*fromgrade;Conn.Open();OleDbDataAdapter da = new OleDbDataAdapter(sql, Conn);/執(zhí)行執(zhí)行SQLDataSetds=newDataSet();da.Fill(ds,grade);/將da對象中的數(shù)據(jù)填充到ds對象中,并起別名“grade”dg.DataSource=ds.Tablesgrade.DefaultView;dg.DataBind();Conn.Close();使用使用DataAdapter對象的對象的SelectCommand屬性屬性 案例名稱:使用案例名稱:使用DataAdapte

26、r對象的對象的SelectCommand屬性屬性程序名稱:程序名稱:6-11.aspx voidPage_Load(ObjectSrc,EventArgsE)OleDbConnectionConn=newOleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);stringstrSQL=select*fromgrade;OleDbCommandComm=newOleDbCommand(strSQL,Conn);OleDbDataAdapterda=newOleDbDataAd

27、apter();da.SelectCommand=Comm;Conn.Open();DataSetds=newDataSet();da.Fill(ds,grade);dg.DataSource=ds.Tablesgrade.DefaultView;dg.DataBind();Conn.Close();案例名稱:使用案例名稱:使用DataAdapter對象的對象的InsertCommand屬性屬性 程序名稱:程序名稱:6-12.aspxvoid Page_Load(Object Src, EventArgs E) OleDbConnection Conn=new OleDbConnection(

28、Provider=Microsoft.Jet.OLEDB.4.0;+ Data Source=+Server.MapPath(person.mdb); string strInsertSQL = INSERT INTO grade(學號學號,姓名姓名,數(shù)學數(shù)學) VALUES(111,蓋茨蓋茨,59); string strSelectSQL = SELECT * FROM grade WHERE 學號學號=111; string strUpdateSQL = UPDATE grade SET 數(shù)學數(shù)學=60 WHERE 學號學號=111; / 創(chuàng)建創(chuàng)建Command對象對象 OleDbCom

29、mand InsertComm = new OleDbCommand(strInsertSQL,Conn); OleDbCommand SelectComm = new OleDbCommand(strSelectSQL,Conn); OleDbCommand UpdateComm = new OleDbCommand(strUpdateSQL,Conn); / 創(chuàng)建創(chuàng)建DataAdapter對象對象da OleDbDataAdapter da=new OleDbDataAdapter(); Conn.Open(); da.SelectCommand = SelectComm; da.Upda

30、teCommand = UpdateComm; da.InsertCommand = InsertComm; / 創(chuàng)建并填充創(chuàng)建并填充DataSet DataSet ds = new DataSet(); da.Fill(ds,grade1); da.InsertCommand.ExecuteNonQuery(); da.Fill(ds,grade2); da.UpdateCommand.ExecuteNonQuery(); da.Fill(ds,grade3); / 將將DataSet綁定到綁定到GridView控件控件 dg1.DataSource=ds.Tablesgrade1.Defa

31、ultView; dg2.DataSource=ds.Tablesgrade2.DefaultView; dg3.DataSource=ds.Tablesgrade3.DefaultView; dg1.DataBind();dg2.DataBind();dg3.DataBind();Conn.Close(); / 關(guān)閉連接關(guān)閉連接 DataSet對象 nDataSet封裝在命名空間“System.Data”中,它是從數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。DataSet中可以包含任意數(shù)量的DataTable(表示內(nèi)存中數(shù)據(jù)的一個表),且每個DataTable對應數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)表和視圖。n通過D

32、ataAdapter的Fill方法,將DataAdapter中SelectCommand的結(jié)果填充到DataSet對象中,而且可以填充多個表,利用別名來區(qū)分。比如“da.Fill(ds,grade1);”的功能是將da對象中的數(shù)據(jù)填充到ds對象中,并起別名“grade1” 。 案例名稱:自動生成案例名稱:自動生成DataSet對象對象程序名稱:程序名稱:6-13.aspx voidPage_Load(Objectsender,EventArgse)DataSetmyds=newDataSet();DataTablemydt=newDataTable(“Squares”);/創(chuàng)建一個DataTa

33、bleDataRowmydr;mydt.Columns.Add(newDataColumn(數(shù)字,typeof(Int32);mydt.Columns.Add(newDataColumn(平方,typeof(Int32);for(inti=0;i10;i+)mydr=mydt.NewRow();mydr0=i;mydr1=i*i;mydt.Rows.Add(mydr);myds.Tables.Add(mydt);dg.DataSource=myds.TablesSquares.DefaultView;dg.DataBind();操作操作DataSet對象對象案例名稱:操作DataSet對象程序

34、名稱:6-14.aspxvoidPage_Load(ObjectSrc,EventArgsE)OleDbConnectionConn=newOleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);Conn.Open();stringstrSQL=select*fromgrade;OleDbDataAdapterda=newOleDbDataAdapter(strSQL,Conn);DataSetds=newDataSet();da.Fill(ds,grade);DataTa

35、bledt=ds.Tablesgrade;DataRowrow=dt.NewRow();row學號=199;row姓名=小布什;row數(shù)學=58;dt.Rows.Add(row);OleDbCommandBuildercb=newOleDbCommandBuilder(da);/自動生成Adapter的Command命令。da.Update(ds,grade);/為DataSet中每個已插入、已更新或已刪除的行調(diào)用相應的INSERT、UPDATE或DELETE語句。dg.DataSource=ds.Tablesgrade.DefaultView;dg.DataBind();Conn.Close

36、(); DataView對象 nDataView對象定義了DataTable的數(shù)據(jù)查看方式,表示用于排序、篩選等的 DataTable 的可綁定數(shù)據(jù)的自定義視圖。封裝在命名空間“Syste.Data”中。n默認查看方式是將數(shù)據(jù)以表格的形式排列,且排列順序遵從從數(shù)據(jù)庫表中取出數(shù)據(jù)時的排列順序,也可以通過DataView對象使數(shù)據(jù)按照某些規(guī)律顯示。使用使用DataView對象對象案例名稱:使用案例名稱:使用DataView對象對象程序名稱:程序名稱:6-15.aspxvoidPage_Load(ObjectSrc,EventArgsE)OleDbConnectionConn=newOleDbCon

37、nection(Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(person.mdb);StringstrSQL=select*fromgrade;OleDbCommandComm=newOleDbCommand(strSQL,Conn);OleDbDataAdapterda=newOleDbDataAdapter();da.SelectCommand=Comm;Conn.Open();DataSetds=newDataSet();da.Fill(ds,grade);DataViewdv=newDataView(ds.T

38、ablesgrade);dv.RowFilter=數(shù)學60;dv.Sort=學號DESC,數(shù)學DESC;Response.Write(滿足條件的記錄有:+dv.Count+條);dg.DataSource=dv;dg.DataBind();Conn.Close();DataSet和DataReader的選擇 n在決定應用程序應使用DataReader還是使用DataSet時,應考慮應用程序所需的功能類型。DataSet用于執(zhí)行以下功能:n在應用程序中將數(shù)據(jù)緩存在本地,以便可以對數(shù)據(jù)進行處理。如果只需要讀取查詢結(jié)果,DataReader是更好的選擇。n從XML Web服務對數(shù)據(jù)進行遠程處理。n與

39、數(shù)據(jù)進行動態(tài)交互,對數(shù)據(jù)進行排序、篩選或組合并關(guān)聯(lián)來自多個源的數(shù)據(jù)。n對數(shù)據(jù)執(zhí)行大量的處理,而不需要與數(shù)據(jù)源保持打開的連接,從而將該連接釋放給其他客戶端使用。6.2 數(shù)據(jù)源控件n數(shù)據(jù)源控件是一組.NET框架類,便于數(shù)據(jù)存儲和數(shù)據(jù)綁定控件之間的雙向綁定。nASP.NET包含幾種類型的數(shù)據(jù)源控件,這些數(shù)據(jù)源控件可以從不同的數(shù)據(jù)源檢索數(shù)據(jù),并將其提供給數(shù)據(jù)綁定控件。n數(shù)據(jù)源控件沒有呈現(xiàn)形式,即在運行時是不可見的,而是用來表示特定的后端數(shù)據(jù)存儲。內(nèi)置的數(shù)據(jù)源控件 數(shù)據(jù)源控件說明SqlDataSource用來訪問關(guān)系型數(shù)據(jù)庫。用來訪問關(guān)系型數(shù)據(jù)庫。AccessDataSource用來訪問用來訪問Acce

40、ss數(shù)據(jù)庫。數(shù)據(jù)庫。ObjectDataSource允許使用自定義的類訪問數(shù)據(jù)。XmlDataSource用來訪問XML文件。SiteMapDataSource 用來訪問分層的站點地圖數(shù)據(jù)。連接到數(shù)據(jù)庫n在連接到數(shù)據(jù)庫時,需要指定數(shù)據(jù)源控件的幾個屬性。最重要的就是控件的ID以及“runat = “server”。另外,還要指明位于哪個服務器上的哪個數(shù)據(jù)庫以及登錄該服務器的用戶名和密碼。這些屬性都包含在連接字符串中。nASP.NET的數(shù)據(jù)庫編程雖然看上去比較復雜,不過通過開發(fā)環(huán)境中的數(shù)據(jù)庫向?qū)?,可以很容易地完成網(wǎng)絡數(shù)據(jù)庫的連接和數(shù)據(jù)顯示。n例:SqlDataSource.aspx6.3 數(shù)據(jù)綁定

41、控件n“數(shù)據(jù)綁定”的意思是將控件與存儲在數(shù)據(jù)源中的信息綁定在一起。n數(shù)據(jù)綁定控件把數(shù)據(jù)源提供的數(shù)據(jù)作為標記,發(fā)給請求的客戶端瀏覽器,然后將數(shù)據(jù)呈現(xiàn)在瀏覽器頁面上。nASP.NET服務器控件有些可以作為數(shù)據(jù)綁定控件來使用。這種綁定可以通過修改該控件的DataSourceID屬性使之連接到數(shù)據(jù)源控件上。數(shù)據(jù)綁定概述ListControl類控件n與數(shù)據(jù)庫數(shù)據(jù)顯示有關(guān)的屬性主要包括:AppendDataBoundItem、DataSourceID、DataSource、DataTextField、DataValueField。nAppendDataBoundItem用于將數(shù)據(jù)綁定項追加到靜態(tài)聲明的列表

42、項上;nDataTextField綁定的字段用于顯示列表項;nDataValueField綁定的字段用于設置列表項的值。 例:DropDownList控件數(shù)據(jù)綁定 n在DropDownList中將顯示tb_Admin表的AdminName字段值,而列表項的值對應AdminID字段值。 n源程序:DropDownListSqlDS.aspx ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件n主要包括:nGridViewnDetailsViewnFormViewnListViewnRepeater和DataList是1.1版就提供的控件,內(nèi)置功能較弱,需要自己實現(xiàn)分頁、排序、數(shù)據(jù)事件等功能。GridView

43、控件 nGridView控件用于顯示二維表格形式的數(shù)據(jù),支持以下功能:n綁定到數(shù)據(jù)源控件n內(nèi)置排序功能n內(nèi)置更新和刪除功能n內(nèi)置分頁功能n內(nèi)置行選擇功能n對GridView對象模型進行編程訪問以動態(tài)設置屬性和處理事件n諸如CheckBoxField和ImageField等新的列類型n用于選擇、更新和刪除的多個數(shù)據(jù)鍵字段n可通過主題和樣式自定義外觀 GridView控件的列字段類型 列字段類型說明BoundField顯示數(shù)據(jù)源中某個字段的值ButtonField為GridView控件中的每個項顯示一個命令按鈕CheckBoxField為GridView控件中的每一項顯示一個復選框,在復選框中顯示

44、布爾型數(shù)據(jù)字段的值CommandField顯示用來執(zhí)行選擇、編輯或刪除操作的預定義命令按鈕。HyperLinkField將數(shù)據(jù)源中某個字段的值顯示為超鏈接ImageField為GridView控件中的每一項顯示一個圖像。TemplateField根據(jù)指定的模板為GridView控件中的每一項顯示用戶定義的內(nèi)容TemplateField模板對應表 模板模板說明說明AlternatingItemTemplate為交替項指定要顯示的內(nèi)容EditItemTemplate為處于編輯的項指定要顯示的內(nèi)容EmptyDataTemplate為空數(shù)據(jù)項指定要顯示的內(nèi)容FooterTemplate為腳注項指定要顯

45、示的內(nèi)容HeaderTemplate為標題項指定要顯示的內(nèi)容ItemTemplate為TemplateField列指定要顯示的內(nèi)容PagerTemplate為頁碼項指定要顯示的內(nèi)容GridView控件應用舉例n對GridView中的數(shù)據(jù)進行分頁和排序n利用GridView控件編輯、刪除數(shù)據(jù)n自定義超鏈接列n自定義圖像列n顯示主從表對GridView中的數(shù)據(jù)進行分頁和排序n要實現(xiàn)分頁功能需要設置屬性AllowPaging的值為True。n要實現(xiàn)排序功能需要設置屬性AllowSorting的值為True。n例:GridView_sort.aspx利用GridView控件編輯、刪除數(shù)據(jù)n“啟用編輯”

46、和“啟用刪除”,可提供編輯和刪除數(shù)據(jù)功能。n綁定至GridView的數(shù)據(jù)源控件也要提供更新、刪除功能。n表的主鍵不能被編輯,GridView的屬性DataKeyNames包含了表的主鍵信息。n例:GridView_link.aspx 自定義超鏈接列nHyperLinkField列的屬性DataNavigateUrlFields對應頁面顯示到超鏈接的NavigateUrl屬性;n屬性DataNavigateUrlFormatString確定目標URL的格式,其中0在網(wǎng)頁瀏覽時會被DataNavigateUrlFields對應的字段值代替;n例:GridView_img.aspx?aaa=0n屬性

47、DataTextField對應頁面顯示到超鏈接的Text屬性。自定義圖像列n表字段存儲了對應圖片的路徑,要在GridView中顯示圖片,只需設置ImageField列的DataImageUrlField屬性;n若在存儲時僅存儲圖片的文件名,則還需配合使用屬性DataImageUrlFormatString;n例如,假設圖片統(tǒng)一存放在網(wǎng)站根路徑下的img文件夾中,字段Image存儲圖片的文件名,則設置如下:顯示主從表n在同一頁顯示主從表n當單擊“選擇” 按鈕時,GridView.SelectedValue返回選擇行所對應的主鍵值,再將該值傳遞給另一數(shù)據(jù)源控件中查詢語句的參數(shù)。n在不同頁顯示主從表n當單擊主表網(wǎng)頁中的鏈接時,相應的查詢字符串傳遞到從表網(wǎng)頁,再獲取其中的值賦給where表達式的參數(shù)。n例:nGrid

溫馨提示

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

評論

0/150

提交評論