ASPNET數(shù)據(jù)庫基本操作_第1頁
ASPNET數(shù)據(jù)庫基本操作_第2頁
ASPNET數(shù)據(jù)庫基本操作_第3頁
ASPNET數(shù)據(jù)庫基本操作_第4頁
ASPNET數(shù)據(jù)庫基本操作_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章ADO.NET數(shù)據(jù)庫編程6內(nèi)容提要本章首先介紹ADO.NET的結(jié)構(gòu)。詳細(xì)介紹ADO.NET的Connection對象,Command對象、DataReader對象、DataAdapter對象和DataSet對象。介紹常用的數(shù)據(jù)源控件和數(shù)據(jù)綁定控件。網(wǎng)絡(luò)數(shù)據(jù)庫編程基礎(chǔ)在.NET框架中,包含了自己的數(shù)據(jù)訪問技術(shù)ADO.NET。ADO.NET的名稱起源于ADO(ActiveXDataObjects)。ADO.NET包含一組托管的類使得Web應(yīng)用程序可以連接數(shù)據(jù)源、執(zhí)行命令以及管理非連接的數(shù)據(jù)。ASP.NET同樣使用服務(wù)器控件來進(jìn)行數(shù)據(jù)處理。ASP.NET中提供兩類數(shù)據(jù)控件。一類是數(shù)據(jù)源(DataSource)控件。另一類是數(shù)據(jù)綁定(Data-bound)控件。6.1ADO.NET的結(jié)構(gòu)ADO.NET有兩個核心組件:.NET數(shù)據(jù)提供程序和DataSet。.NET數(shù)據(jù)提供程序表6-1.NET數(shù)據(jù)提供程序的四個核心對象對象說明Connection建立與特定數(shù)據(jù)源的連接。Command對數(shù)據(jù)源執(zhí)行命令。DataReader從數(shù)據(jù)源中讀取只進(jìn)且只讀的數(shù)據(jù)流。DataAdapter用于將數(shù)據(jù)填充到DataSet。SQLServer.NET數(shù)據(jù)提供程序?qū)?yīng)SQLServer.NET的4個核心對象分別是:SqlConnection、SqlCommand、SqlDataReader和SqlDataAdapter。這4個對象包含在System.Data.SqlClient命名空間中,需要將這個命名空間引入到文件中。SQLServer.NET數(shù)據(jù)提供程序?qū)QLServer數(shù)據(jù)庫的底層操作進(jìn)行了封裝,可以更加快捷地訪問SQLServer數(shù)據(jù)庫。OLEDB.NET數(shù)據(jù)提供程序?qū)?yīng)OLEDB.NET的4個核心對象分別是:OleDbConnection、OleDbCommand、OleDbDataReader和OleDbDataAdapter。這4個對象包含在System.Data.OleDb命名空間中,需要將這個命名空間引入到文件中。目前主要用來訪問Access、Foxpro等簡單的數(shù)據(jù)源。OracleDB.NET數(shù)據(jù)提供程序?qū)?yīng)OracleDB.NET的4個核心對象分別是:OracleConnection、OracleCommand、OracleDataReader和OracleDataAdapter。這4個對象包含在System.Data.OracleClient命名空間中,需要將這個命名空間引入到文件中。ODBC.NET數(shù)據(jù)提供程序?qū)?yīng)ODBC.NET的4個核心對象分別是:OdbcConnection、OdbcCommand、OdbcDataReader和OdbcDataAdapter。這4個對象包含在System.Data.Odbc命名空間中,需要將這個命名空間引入到文件中。通過ODBC建立的數(shù)據(jù)源都可以通過ODBC.NET數(shù)據(jù)提供程序訪問。DataSet對象簡介DataSet是ADO.NET的核心組件,內(nèi)部用XML描述數(shù)據(jù),具有平臺無關(guān)性。DataSet包含一個或多個DataTable對象的集合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及DataTable對象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息等組成。DataSet通過DataAdapter對象從數(shù)據(jù)源得到數(shù)據(jù),DataAdapter是連接DataSet和數(shù)據(jù)庫的一個橋梁,因此命名為:“數(shù)據(jù)適配器”。Connection對象用于建立數(shù)據(jù)庫連接,常用方法有Open()和Close()。DataSource屬性用來獲取數(shù)據(jù)源的服務(wù)器名或文件名;Provider屬性用來指定數(shù)據(jù)庫驅(qū)動程序;ConnectionString屬性用來指定連接字符串。案例名稱:使用Connection對象程序名稱:6-01.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><scriptlanguage="C#"runat="server">voidPage_Load(Objectsender,EventArgse){OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb");Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();}</script><asp:Labelid="Message"runat="server"/>使用Connection對象的構(gòu)造函數(shù)案例名稱:使用Connection對象的構(gòu)造函數(shù)程序名稱:6-02.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><scriptlanguage="C#"runat="server">voidPage_Load(Objectsender,EventArgse){ OleDbConnectionConn; Conn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb")); Conn.Open(); Message.Text=Conn.State.ToString(); Conn.Close();}</script><asp:Labelid="Message"runat="server"/>連接SQLServer數(shù)據(jù)庫的常用參數(shù)參數(shù)名稱參數(shù)說明ConnectionTimeout設(shè)置SqlConnection對象連接SQLServer數(shù)據(jù)庫的超時時間,單位為妙,若超時,則返回連接數(shù)據(jù)庫失敗。默認(rèn)值15秒。DataSource要連接的SQLServer數(shù)據(jù)庫服務(wù)器名稱。Server要連接的SQLServer數(shù)據(jù)庫服務(wù)器名稱。Addr要連接的SQLServer數(shù)據(jù)庫服務(wù)器的地址。UserID/uid設(shè)置登錄SQLServer數(shù)據(jù)庫的用戶帳號。Password/pwd設(shè)置登錄SQLServer數(shù)據(jù)庫的密碼。InitialCatalog設(shè)置要連接的數(shù)據(jù)庫名稱。Database設(shè)置要連接的數(shù)據(jù)庫名稱。使用Connection對象連接SQLServer數(shù)據(jù)庫案例名稱:使用Connection對象連接SQLServer數(shù)據(jù)庫程序名稱:6-03.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.SqlClient"%><scriptrunat="server">voidPage_Load(Objectsender,EventArgse){SqlConnectionConn;

Conn=newSqlConnection("server=localhost;database=testdb;uid=sa;pwd=''");

//SQLServer身份驗證

//Conn=newSqlConnection("DataSource=ZXG;IntegratedSecurity=true;Initial

Catalog=testdb;");

//Windows身份驗證Conn.Open();Message.Text=Conn.State.ToString();Conn.Close();}</script><asp:Labelid="Message"runat="server"/>Command對象建立數(shù)據(jù)連接以后,利用Command對象來執(zhí)行命令并從數(shù)據(jù)源返回結(jié)果。常用方法:ExecuteReader()、ExecuteScalar()和ExecuteNonQuery()。

Command對象常用的構(gòu)造函數(shù)包括兩個參數(shù),1個是要執(zhí)行的SQL語句,另一個是已經(jīng)建立的Connnection對象,基本語法是:OleDbCommandComm=newOleDbCommand("select*fromgrade",Conn);ExecuteReader方法主要用來執(zhí)行基本SQL查詢語句,要求SQL返回記錄集。案例名稱:使用ExecuteRader方法程序名稱:6-04.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><scriptrunat="server">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.DataSource=dr;dg.DataBind();Conn.Close();}</script><asp:gridviewid="dg"runat="server"></asp:gridview>案例名稱:使用Like子句實現(xiàn)模糊查詢程序名稱:6-05.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><scriptrunat="server">voidsubmit_click(Objectsender,EventArgse){OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb");Conn.Open();stringsql="select*fromgrade";

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();}</script>請輸入被查詢的人名關(guān)鍵字<br><formname="myform"runat="server"><asp:TextBoxid="mytext"runat="server"/><br><asp:Buttonid="submit"onclick=“submit_click”runat="server"Text="查詢"></asp:Button><br><asp:labelid="Message"runat="server"/><br><asp:GridViewid="dg"runat="server"/></form>ExecuteScalar方法該方法返回單個值,從相關(guān)的查詢中返回第一行和第一列的值(Object類型),一般用來執(zhí)行聚合函數(shù)。案例名稱:使用ExecuteScalar方法程序名稱:6-06.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><scriptrunat="server">voidPage_Load(Objectsender,EventArgse){OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb");Conn.Open();StringstrSQL="selectavg(數(shù)學(xué))fromgrade";OleDbCommandComm=newOleDbCommand(strSQL,Conn);Doubled=(Double)Comm.ExecuteScalar();

Message.Text="所有人數(shù)學(xué)的平均成績?yōu)?+d.ToString()+"分";Conn.Close();}</script><asp:Labelid="Message"runat="server"/>ExecuteNonQuery方法用于執(zhí)行不需要返回結(jié)果的命令,并返回受影響的行數(shù)。案例名稱:使用ExecuteNonQuery方法執(zhí)行Insert語句程序名稱:6-07.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><scriptrunat="server">voidPage_Load(Objectsender,EventArgse){OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb");Conn.Open();StringstrSQL="insertintograde(學(xué)號,姓名,數(shù)學(xué))"+"values(99,'小張',100)";OleDbCommandComm=newOleDbCommand(strSQL,Conn);

Comm.ExecuteNonQuery();

Conn.Close();Response.Write("操作成功!");}</script>ADO.NET事務(wù)處理事務(wù)是一些事件的集合,執(zhí)行一條SQL語句可理解成一個事件。ADO.NET使用Connection對象的BeginTransaction()方法來聲明事務(wù)開始,利用Transaction對象的Commit()方法來提交事務(wù),利用Transaction對象的Rollback()方法來回滾事務(wù)。使用事務(wù)的基本格式案例名稱:使用事務(wù)的基本格式程序名稱:6-08.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><scriptrunat="server">voidPage_Load(Objectsender,EventArgse){OleDbConnectionConn=newOleDbConnection();Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb");Conn.Open();OleDbCommandComm=newOleDbCommand();

OleDbTransactionTrans;Trans=Conn.BeginTransaction();Comm.Connection=Conn;Comm.Transaction=Trans;try{Comm.CommandText="UPDATEgradeSET數(shù)學(xué)=100WHERE姓名LIKE'%周%'";Comm.ExecuteNonQuery();Comm.CommandText="UPDATEgradeSET數(shù)學(xué)=60WHERE姓名LIKE'%張%'";Comm.ExecuteNonQuery();

Trans.Commit();Response.Write("事務(wù)執(zhí)行成功!");}catch(Exceptionex){

Trans.Rollback();Response.Write("出現(xiàn)錯誤,事務(wù)已經(jīng)回滾!");}finally{Conn.Close();}}</script>DataReader對象取DataReader對象的數(shù)據(jù),有兩種方法:1、通過和GridView等數(shù)據(jù)控件綁定,直接輸出,使用方法如程序6-04.aspx。2、另一種方法是利用循環(huán)將其數(shù)據(jù)取出。使用DataReader對象輸出數(shù)據(jù)案例名稱:使用DataReader對象輸出數(shù)據(jù)程序名稱:6-09.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><Scriptrunat="server">protectedvoidPage_Load(objectsender,EventArgse){

OleDbConnectionConn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb"));Conn.Open();

StringstrSQL="select*fromgrade";

OleDbCommandComm=newOleDbCommand(strSQL,Conn);OleDbDataReaderdr=Comm.ExecuteReader();

stringhtml="<Tableborder=1>";html+="<TR>";html+="<TD><B>學(xué)號</B></TD>";html+="<TD><B>姓名</B></TD>";html+="<TD><B>數(shù)學(xué)</B></TD>";html+="</TR>";

try{

while(dr.Read()){

//讀出每一條記錄html+="<TR>";html+="<TD>"+dr["學(xué)號"].ToString()+"</TD>";html+="<TD>"+dr["姓名"].ToString()+"</TD>";html+="<TD>"+dr["數(shù)學(xué)"].ToString()+"</TD>";html+="</TR>";}html+="</Table>";}catch(Exceptionex){Response.Write(ex.Message);}

finally{

dr.Close();Conn.Close();//關(guān)閉鏈接}Response.Write(html);}</Script>DataAdapter對象DataAdapter對象用于從數(shù)據(jù)源中獲取數(shù)據(jù),填充DataSet中的表和約束,并將對DataSet的更改提交回數(shù)據(jù)源。DataAdapter對象有4個重要屬性,即SelectCommand、InsertCommand、UpdateCommand、DeleteCommand,都是Command對象,其中SelectCommand用來執(zhí)行查詢,其他三個用于執(zhí)行數(shù)據(jù)操作。除了SelectCommand屬性,其他三個屬性都需使用“ExecuteNonQuery()”方法調(diào)用。使用DataAdapter對象的構(gòu)造方法案例名稱:使用DataAdapter對象構(gòu)造方法程序名稱:6-10.aspx

<%@PageLanguage="C#"%><scriptrunat="server">protectedvoidPage_Load(Objectsender,EventArgse){

OleDbConnectionConn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb"));

stringsql="select*fromgrade"; Conn.Open();

OleDbDataAdapterda=newOleDbDataAdapter(sql,Conn);//執(zhí)行SQL

DataSetds=newDataSet(); da.Fill(ds,"grade");//將da對象中的數(shù)據(jù)填充到ds對象中,并起別名“grade”

dg.DataSource=ds.Tables["grade"].DefaultView; dg.DataBind(); Conn.Close();}</script><asp:GridViewID="dg"runat="server"/>使用DataAdapter對象的SelectCommand屬性案例名稱:使用DataAdapter對象的SelectCommand屬性程序名稱:6-11.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><Scriptlanguage="C#"runat="server">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=newOleDbDataAdapter(); da.SelectCommand=Comm; Conn.Open(); DataSetds=newDataSet(); da.Fill(ds,"grade"); dg.DataSource=ds.Tables["grade"].DefaultView; dg.DataBind(); Conn.Close();}</script><asp:GridViewID="dg"runat="server"></asp:GridView>案例名稱:使用DataAdapter對象的InsertCommand屬性程序名稱:6-12.aspx<Scriptrunat="server">voidPage_Load(ObjectSrc,EventArgsE){OleDbConnectionConn=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+Server.MapPath("person.mdb"));stringstrInsertSQL="INSERTINTOgrade(學(xué)號,姓名,數(shù)學(xué))VALUES(111,'蓋茨',59)";stringstrSelectSQL="SELECT*FROMgradeWHERE學(xué)號=111";stringstrUpdateSQL="UPDATEgradeSET數(shù)學(xué)=60WHERE學(xué)號=111";//創(chuàng)建Command對象

OleDbCommandInsertComm=newOleDbCommand(strInsertSQL,Conn);OleDbCommandSelectComm=newOleDbCommand(strSelectSQL,Conn);OleDbCommandUpdateComm=newOleDbCommand(strUpdateSQL,Conn);//創(chuàng)建DataAdapter對象daOleDbDataAdapterda=newOleDbDataAdapter();Conn.Open();da.SelectCommand=SelectComm;da.UpdateCommand=UpdateComm;da.InsertCommand=InsertComm;//創(chuàng)建并填充DataSetDataSetds=newDataSet();da.Fill(ds,"grade1");da.InsertCommand.ExecuteNonQuery();da.Fill(ds,"grade2");da.UpdateCommand.ExecuteNonQuery();da.Fill(ds,"grade3");//將DataSet綁定到GridView控件dg1.DataSource=ds.Tables["grade1"].DefaultView;dg2.DataSource=ds.Tables["grade2"].DefaultView;dg3.DataSource=ds.Tables["grade3"].DefaultView;dg1.DataBind(); dg2.DataBind(); dg3.DataBind();Conn.Close();//關(guān)閉連接}</script>

<asp:DataGridid="dg1"runat="server"/><br/><asp:GridViewid="dg2"runat="server"/><br/><asp:GridViewid="dg3"runat="server"/>

DataSet對象DataSet封裝在命名空間“System.Data”中,它是從數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。DataSet中可以包含任意數(shù)量的DataTable(表示內(nèi)存中數(shù)據(jù)的一個表),且每個DataTable對應(yīng)數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)表和視圖。通過DataAdapter的Fill方法,將DataAdapter中SelectCommand的結(jié)果填充到DataSet對象中,而且可以填充多個表,利用別名來區(qū)分。比如“da.Fill(ds,"grade1");”的功能是將da對象中的數(shù)據(jù)填充到ds對象中,并起別名“grade1”。案例名稱:自動生成DataSet對象程序名稱:6-13.aspx

<%@PageLanguage="C#"%><%@Importnamespace="System.Data"%><scriptlanguage="C#"runat="server">voidPage_Load(Objectsender,EventArgse){ DataSetmyds=newDataSet(); DataTablemydt=newDataTable(“Squares”);//創(chuàng)建一個DataTable DataRowmydr; mydt.Columns.Add(newDataColumn("數(shù)字",typeof(Int32))); mydt.Columns.Add(newDataColumn("平方",typeof(Int32))); for(inti=0;i<10;i++){ mydr=mydt.NewRow(); mydr[0]=i; mydr[1]=i*i; mydt.Rows.Add(mydr); } myds.Tables.Add(mydt); dg.DataSource=myds.Tables["Squares"].DefaultView; dg.DataBind();}</script><asp:GridViewid="dg"runat="server"/>操作DataSet對象案例名稱:操作DataSet對象程序名稱:6-14.aspx

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><Scriptrunat="server">voidPage_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"); DataTabledt=ds.Tables["grade"]; DataRowrow=dt.NewRow(); row["學(xué)號"]="199"; row["姓名"]="小布什"; row["數(shù)學(xué)"]=58; dt.Rows.Add(row);

OleDbCommandBuildercb=newOleDbCommandBuilder(da);

//自動生成Adapter的Command命令。 da.Update(ds,"grade");//為DataSet中每個已插入、已更新或已刪除的行調(diào)用相應(yīng)的INSERT、UPDATE或DELETE語句。 dg.DataSource=ds.Tables["grade"].DefaultView; dg.DataBind(); Conn.Close();}</script><asp:GridViewid="dg"runat="server"/>

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

<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.OleDb"%><Scriptrunat="server">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=newOleDbDataAdapter();da.SelectCommand=Comm;Conn.Open();DataSetds=newDataSet();da.Fill(ds,"grade");

DataViewdv=newDataView(ds.Tables["grade"]);dv.RowFilter="數(shù)學(xué)>60";dv.Sort="學(xué)號DESC,數(shù)學(xué)DESC";Response.Write("滿足條件的記錄有:"+dv.Count+"條");dg.DataSource=dv;dg.DataBind();Conn.Close();}</script><asp:GridViewid="dg"runat="server"/>DataSet和DataReader的選擇在決定應(yīng)用程序應(yīng)使用DataReader還是使用DataSet時,應(yīng)考慮應(yīng)用程序所需的功能類型。DataSet用于執(zhí)行以下功能:在應(yīng)用程序中將數(shù)據(jù)緩存在本地,以便可以對數(shù)據(jù)進(jìn)行處理。如果只需要讀取查詢結(jié)果,DataReader是更好的選擇。從XMLWeb服務(wù)對數(shù)據(jù)進(jìn)行遠(yuǎn)程處理。與數(shù)據(jù)進(jìn)行動態(tài)交互,對數(shù)據(jù)進(jìn)行排序、篩選或組合并關(guān)聯(lián)來自多個源的數(shù)據(jù)。對數(shù)據(jù)執(zhí)行大量的處理,而不需要與數(shù)據(jù)源保持打開的連接,從而將該連接釋放給其他客戶端使用。6.2數(shù)據(jù)源控件數(shù)據(jù)源控件是一組.NET框架類,便于數(shù)據(jù)存儲和數(shù)據(jù)綁定控件之間的雙向綁定。ASP.NET包含幾種類型的數(shù)據(jù)源控件,這些數(shù)據(jù)源控件可以從不同的數(shù)據(jù)源檢索數(shù)據(jù),并將其提供給數(shù)據(jù)綁定控件。數(shù)據(jù)源控件沒有呈現(xiàn)形式,即在運(yùn)行時是不可見的,而是用來表示特定的后端數(shù)據(jù)存儲。內(nèi)置的數(shù)據(jù)源控件數(shù)據(jù)源控件說明SqlDataSource用來訪問關(guān)系型數(shù)據(jù)庫。AccessDataSource用來訪問Access數(shù)據(jù)庫。ObjectDataSource允許使用自定義的類訪問數(shù)據(jù)。XmlDataSource用來訪問XML文件。SiteMapDataSource用來訪問分層的站點地圖數(shù)據(jù)。連接到數(shù)據(jù)庫在連接到數(shù)據(jù)庫時,需要指定數(shù)據(jù)源控件的幾個屬性。最重要的就是控件的ID以及“runat=“server”。另外,還要指明位于哪個服務(wù)器上的哪個數(shù)據(jù)庫以及登錄該服務(wù)器的用戶名和密碼。這些屬性都包含在連接字符串中。ASP.NET的數(shù)據(jù)庫編程雖然看上去比較復(fù)雜,不過通過開發(fā)環(huán)境中的數(shù)據(jù)庫向?qū)?,可以很容易地完成網(wǎng)絡(luò)數(shù)據(jù)庫的連接和數(shù)據(jù)顯示。例:SqlDataSource.aspx6.3數(shù)據(jù)綁定控件“數(shù)據(jù)綁定”的意思是將控件與存儲在數(shù)據(jù)源中的信息綁定在一起。數(shù)據(jù)綁定控件把數(shù)據(jù)源提供的數(shù)據(jù)作為標(biāo)記,發(fā)給請求的客戶端瀏覽器,然后將數(shù)據(jù)呈現(xiàn)在瀏覽器頁面上。ASP.NET服務(wù)器控件有些可以作為數(shù)據(jù)綁定控件來使用。這種綁定可以通過修改該控件的DataSourceID屬性使之連接到數(shù)據(jù)源控件上。數(shù)據(jù)綁定概述ListControl類控件與數(shù)據(jù)庫數(shù)據(jù)顯示有關(guān)的屬性主要包括:AppendDataBoundItem、DataSourceID、DataSource、DataTextField、DataValueField。AppendDataBoundItem用于將數(shù)據(jù)綁定項追加到靜態(tài)聲明的列表項上;DataTextField綁定的字段用于顯示列表項;DataValueField綁定的字段用于設(shè)置列表項的值。例:DropDownList控件數(shù)據(jù)綁定

在DropDownList中將顯示tb_Admin表的AdminName字段值,而列表項的值對應(yīng)AdminID字段值。源程序:DropDownListSqlDS.aspx

ASP.NET數(shù)據(jù)綁定控件主要包括:GridViewDetailsViewFormViewListViewRepeater和DataList是1.1版就提供的控件,內(nèi)置功能較弱,需要自己實現(xiàn)分頁、排序、數(shù)據(jù)事件等功能。GridView控件GridView控件用于顯示二維表格形式的數(shù)據(jù),支持以下功能:綁定到數(shù)據(jù)源控件內(nèi)置排序功能內(nèi)置更新和刪除功能內(nèi)置分頁功能內(nèi)置行選擇功能對GridView對象模型進(jìn)行編程訪問以動態(tài)設(shè)置屬性和處理事件諸如CheckBoxField和ImageField等新的列類型用于選擇、更新和刪除的多個數(shù)據(jù)鍵字段可通過主題和樣式自定義外觀GridView控件的列字段類型列字段類型說明BoundField顯示數(shù)據(jù)源中某個字段的值ButtonField為GridView控件中的每個項顯示一個命令按鈕CheckBoxField為GridView控件中的每一項顯示一個復(fù)選框,在復(fù)選框中顯示布爾型數(shù)據(jù)字段的值CommandField顯示用來執(zhí)行選擇、編輯或刪除操作的預(yù)定義命令按鈕。HyperLinkField將數(shù)據(jù)源中某個字段的值顯示為超鏈接ImageField為GridView控件中的每一項顯示一個圖像。TemplateField根據(jù)指定的模板為GridView控件中的每一項顯示用戶定義的內(nèi)容TemplateField模板對應(yīng)表模板說明AlternatingItemTemplate為交替項指定要顯示的內(nèi)容EditItemTemplate為處于編輯的項指定要顯示的內(nèi)容EmptyDataTemplate為空數(shù)據(jù)項指定要顯示的內(nèi)容FooterTemplate為腳注項指定要顯示的內(nèi)容HeaderTemplate為標(biāo)題項指定要顯示的內(nèi)容ItemTemplate為TemplateField列指定要顯示的內(nèi)容PagerTemplate為頁碼項指定要顯示的內(nèi)容GridView控件應(yīng)用舉例對GridView中的數(shù)據(jù)進(jìn)行分頁和排序利用GridView控件編輯、刪除數(shù)據(jù)自定義超鏈接列自定義圖像列顯示主從表對GridView中的數(shù)據(jù)進(jìn)行分頁和排序要實現(xiàn)分頁功能需要設(shè)置屬性AllowPaging的值為True。要實現(xiàn)排序功能需要設(shè)置屬性AllowSorting的值為True。例:GridView_sort.aspx利用GridView控件編輯、刪除數(shù)據(jù)“啟用編輯”和“啟用刪除”,可提供編輯和刪除數(shù)據(jù)功能。綁定至GridView的數(shù)據(jù)源控件也要提供更新、刪除功能。表的主鍵不能被編輯,GridView的屬性DataKeyNames包含了表的主鍵信息。例:GridView_link.aspx

自定義超鏈接列HyperLinkField列的屬性DataNavigateUrlFields對應(yīng)頁面顯示到超鏈接的NavigateUrl屬性;屬性DataNavigateUrlFormatString確定目標(biāo)URL的格式,其中{0}在網(wǎng)頁瀏覽時會被DataNavigateUrlFields對應(yīng)的字段值代替;例:GridView_img.aspx?aaa={0}屬性DataTextFiel

溫馨提示

  • 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

提交評論