![[分享]ADONET訪問(wèn)數(shù)據(jù)庫(kù)詳解(和大家一起提高)_第1頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/6/79851a71-96b5-4b39-8b36-e5ff81b5803e/79851a71-96b5-4b39-8b36-e5ff81b5803e1.gif)
![[分享]ADONET訪問(wèn)數(shù)據(jù)庫(kù)詳解(和大家一起提高)_第2頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/6/79851a71-96b5-4b39-8b36-e5ff81b5803e/79851a71-96b5-4b39-8b36-e5ff81b5803e2.gif)
![[分享]ADONET訪問(wèn)數(shù)據(jù)庫(kù)詳解(和大家一起提高)_第3頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/6/79851a71-96b5-4b39-8b36-e5ff81b5803e/79851a71-96b5-4b39-8b36-e5ff81b5803e3.gif)
![[分享]ADONET訪問(wèn)數(shù)據(jù)庫(kù)詳解(和大家一起提高)_第4頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/6/79851a71-96b5-4b39-8b36-e5ff81b5803e/79851a71-96b5-4b39-8b36-e5ff81b5803e4.gif)
![[分享]ADONET訪問(wèn)數(shù)據(jù)庫(kù)詳解(和大家一起提高)_第5頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/6/79851a71-96b5-4b39-8b36-e5ff81b5803e/79851a71-96b5-4b39-8b36-e5ff81b5803e5.gif)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
分享ADO.NET訪問(wèn)數(shù)據(jù)庫(kù)詳解(和大家一起提高) 我發(fā)現(xiàn)有很多人對(duì)ADO.NET認(rèn)識(shí)很模糊,特整理一下文章,希望和大家一起進(jìn)步! ADO.NET 概述 ADO.NET 提供對(duì) Microsoft SQL Server 等數(shù)據(jù)源以及通過(guò) OLE DB 和 XML 公開(kāi)的數(shù)據(jù)源的一致訪問(wèn)。數(shù)據(jù)共享使用者應(yīng)用程序可以使用 ADO.NET 來(lái)連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。ADO.NET 有效地從數(shù)據(jù)操作中將數(shù)據(jù)訪問(wèn)分解為多個(gè)可以單獨(dú)使用或一前一后使用的不連續(xù)組件。ADO.NET 包含用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果的 .NET 數(shù)據(jù)提供程序。您可以直接處理檢索到的結(jié)果,或?qū)⑵浞湃?ADO.NET DataSet 對(duì)象,以便與來(lái)自多個(gè)源的數(shù)據(jù)或在層之間進(jìn)行遠(yuǎn)程處理的數(shù)據(jù)組合在一起,以特殊方式向用戶公開(kāi)。ADO.NET DataSet 對(duì)象也可以獨(dú)立于 .NET 數(shù)據(jù)提供程序使用,以管理應(yīng)用程序本地的數(shù)據(jù)或源自 XML 的數(shù)據(jù)。ADO.NET 結(jié)構(gòu)以前,數(shù)據(jù)處理主要依賴于基于連接的雙層模型。當(dāng)數(shù)據(jù)處理越來(lái)越多地使用多層結(jié)構(gòu)時(shí),程序員正在向斷開(kāi)方式轉(zhuǎn)換,以便為他們的應(yīng)用程序提供更佳的可縮放性。ADO.NET 借用 XML 的力量來(lái)提供對(duì)數(shù)據(jù)的斷開(kāi)式訪問(wèn)。ADO.NET 的設(shè)計(jì)與 .NET 框架中 XML 類的設(shè)計(jì)是并進(jìn)的它們都是同一個(gè)結(jié)構(gòu)的組件。ADO.NET 和 .NET 框架中的 XML 類集中于 DataSet 對(duì)象。無(wú)論 DataSet 是文件還是 XML 流,它都可以使用來(lái)自 XML 源的數(shù)據(jù)來(lái)進(jìn)行填充。無(wú)論 DataSet 中數(shù)據(jù)的數(shù)據(jù)源是什么,DataSet 都可以寫為符合 WWW 聯(lián)合會(huì) (W3C) 的 XML,并且將其架構(gòu)包含為 XML 架構(gòu)定義語(yǔ)言 (XSD) 架構(gòu)。由于 DataSet 固有的序列化格式為 XML,它是在層間移動(dòng)數(shù)據(jù)的優(yōu)良媒介,這使 DataSet 成為以遠(yuǎn)程方式向 XML Web services 發(fā)送數(shù)據(jù)和架構(gòu)上下文以及從 XML Web services 接收數(shù)據(jù)和架構(gòu)上下文的最佳選擇。設(shè)計(jì) ADO.NET 組件的目的是為了從數(shù)據(jù)操作中分解出數(shù)據(jù)訪問(wèn)。完成此任務(wù)的是 ADO.NET 的兩個(gè)核心組件:DataSet 和 .NET 數(shù)據(jù)提供程序,后者是一組包括 Connection、Command、DataReader 和 DataAdapter 對(duì)象在內(nèi)的組件。ADO.NET DataSet 是 ADO.NET 的斷開(kāi)式結(jié)構(gòu)的核心組件。DataSet 的設(shè)計(jì)目的很明確:為了實(shí)現(xiàn)獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問(wèn)。因此,它可以用于多種不同的數(shù)據(jù)源,用于 XML 數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DataSet 包含一個(gè)或多個(gè) DataTable 對(duì)象的集合,這些對(duì)象由數(shù)據(jù)行和數(shù)據(jù)列以及主鍵、外鍵、約束和有關(guān) DataTable 對(duì)象中數(shù)據(jù)的關(guān)系信息組成。ADO.NET 結(jié)構(gòu)的另一個(gè)核心元素是 .NET 數(shù)據(jù)提供程序,其組件的設(shè)計(jì)目的相當(dāng)明確:為了實(shí)現(xiàn)數(shù)據(jù)操作和對(duì)數(shù)據(jù)的快速、只進(jìn)、只讀訪問(wèn)。Connection 對(duì)象提供與數(shù)據(jù)源的連接。Command 對(duì)象使您能夠訪問(wèn)用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過(guò)程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令。DataReader 從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。最后,DataAdapter 提供連接 DataSet 對(duì)象和數(shù)據(jù)源的橋梁。DataAdapter 使用 Command 對(duì)象在數(shù)據(jù)源中執(zhí)行 SQL 命令,以便將數(shù)據(jù)加載到 DataSet 中,并使對(duì) DataSet 中數(shù)據(jù)的更改與數(shù)據(jù)源保持一致??梢詾槿魏螖?shù)據(jù)源編寫 .NET 數(shù)據(jù)提供程序。.NET 框架附帶了兩個(gè) .NET 數(shù)據(jù)提供程序:SQL Server .NET 數(shù)據(jù)提供程序和 OLE DB .NET 數(shù)據(jù)提供程序。下圖闡釋了 ADO.NET 結(jié)構(gòu)的組件。ADO.NET DataSet DataSet 對(duì)象是支持 ADO.NET 的斷開(kāi)式、分布式數(shù)據(jù)方案的核心對(duì)象。DataSet 是數(shù)據(jù)的內(nèi)存駐留表示形式,無(wú)論數(shù)據(jù)源是什么,它都會(huì)提供一致的關(guān)系編程模型。它可以用于多個(gè)不同的數(shù)據(jù)源,用于 XML 數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DataSet 表示包括相關(guān)表、約束和表間關(guān)系在內(nèi)的整個(gè)數(shù)據(jù)集。下圖將顯示 DataSet 對(duì)象模型。?DataSet 中的方法和對(duì)象與關(guān)系數(shù)據(jù)庫(kù)模型中的方法和對(duì)象一致。DataSet 也可以按 XML 的形式來(lái)保持和重新加載其內(nèi)容,并按 XML 架構(gòu)定義語(yǔ)言 (XSD) 架構(gòu)的形式來(lái)保持和重新加載其架構(gòu)。使用 ADO.NET 提供的通用接口,您可以編寫一組在使用任何 .NET 數(shù)據(jù)提供程序時(shí)都將運(yùn)行的代碼。當(dāng)編寫將用于多個(gè) .NET 數(shù)據(jù)提供程序的代碼時(shí),請(qǐng)?zhí)貏e注意所使用的任何提供程序特定的語(yǔ)法。例如,根據(jù)您所訪問(wèn)的數(shù)據(jù)源,SQL 語(yǔ)法將有所不同。當(dāng)更改為一個(gè)不同的 .NET 數(shù)據(jù)提供程序時(shí),如果將 SQL 命令隔離為字符串常數(shù),則將使代碼更易于維護(hù)。另外,務(wù)必要保持在代碼中創(chuàng)建參數(shù)的順序。對(duì)于 SQL Server .NET 數(shù)據(jù)提供程序,參數(shù)使用名稱來(lái)標(biāo)識(shí),因此參數(shù)順序并不重要。但是,OLE DB .NET 數(shù)據(jù)提供程序會(huì)按照參數(shù)添加到參數(shù)集合中的順序來(lái)分配參數(shù)值。因此,最好始終保持參數(shù)在代碼中的順序。下面是C#的示例代碼:C#/ You can use either:/ IDbConnection myConn = new SqlConnection();/ or:/ IDbConnection myConn = new OleDbConnection();IDbCommand myCommand = myConn.CreateCommand();myCommand.CommandText = SELECT * FROM Customers;IDataReader myReader = myCommand.ExecuteReader();while (myReader.Read()Console.WriteLine(0t1, myReader.GetString(0), myReader.GetString(1);創(chuàng)建和使用 DataSet ADO.NET DataSet 是數(shù)據(jù)的一種內(nèi)存駐留表示形式,無(wú)論它包含的數(shù)據(jù)來(lái)自什么數(shù)據(jù)源,它都會(huì)提供一致的關(guān)系編程模型。一個(gè) DataSet 表示整個(gè)數(shù)據(jù)集,其中包含對(duì)數(shù)據(jù)進(jìn)行包含、排序和約束的表以及表間的關(guān)系。使用 DataSet 的方法有若干種,這些方法可以單獨(dú)應(yīng)用,也可以結(jié)合應(yīng)用。您可以: 在 DataSet 中以編程方式創(chuàng)建 DataTables、DataRelations 和 Constraints 并使用數(shù)據(jù)填充這些表。 通過(guò) DataAdapter 用現(xiàn)有關(guān)系數(shù)據(jù)源中的數(shù)據(jù)表填充 DataSet。創(chuàng)建 DataSet 可以通過(guò)調(diào)用 DataSet 構(gòu)造函數(shù)來(lái)創(chuàng)建 DataSet 的實(shí)例。請(qǐng)指定一個(gè)可選名稱參數(shù)。如果沒(méi)有為 DataSet 指定名稱,則該名稱會(huì)設(shè)置為“NewDataSet”。也可以基于現(xiàn)有的 DataSet 來(lái)創(chuàng)建新的 DataSet。新的 DataSet 可以是:現(xiàn)有 DataSet 的原樣副本;DataSet 的復(fù)本,它復(fù)制關(guān)系結(jié)構(gòu)(即架構(gòu))但不包含現(xiàn)有 DataSet 中的任何數(shù)據(jù);或 DataSet 的子集,它僅包含現(xiàn)有 DataSet 中已使用 GetChanges 方法修改的行。以下代碼示例演示如何構(gòu)造 DataSet 的實(shí)例。C# DataSet custDS = new DataSet(CustomerOrders); 向 DataSet 添加 DataTable ADO.NET 使您能夠創(chuàng)建 DataTable 對(duì)象并將其添加到現(xiàn)有 DataSet 中??梢允褂靡砑拥?DataTable 的 Columns 集合中的 DataColumn 對(duì)象的 PrimaryKey 和 Unique 屬性來(lái)設(shè)置 DataTable 的約束信息。以下示例構(gòu)造一個(gè) DataSet,將一個(gè)新的 DataTable 對(duì)象添加到該 DataSet 中,然后將三個(gè) DataColumn 對(duì)象添加到該表中。最后,該代碼將一個(gè)列設(shè)置為主鍵列。C#DataSet custDS = new DataSet(CustomerOrders);DataTable ordersTable = custDS.Tables.Add(Orders);DataColumn pkCol = ordersTable.Columns.Add(OrderID, typeof(Int32);ordersTable.Columns.Add(OrderQuantity, typeof(Int32);ordersTable.Columns.Add(CompanyName, typeof(string);ordersTable.PrimaryKey = new DataColumn pkCol;創(chuàng)建和使用數(shù)據(jù)表 DataSet 由表、關(guān)系和約束的集合組成。在 ADO.NET 中,DataTable 對(duì)象用于表示 DataSet 中的表。DataTable 表示一個(gè)內(nèi)存內(nèi)關(guān)系數(shù)據(jù)的表;數(shù)據(jù)對(duì)于它駐留于其中的基于 .NET 的應(yīng)用程序來(lái)說(shuō)是本地?cái)?shù)據(jù),但可從數(shù)據(jù)源(例如,使用 DataAdapter 的 Microsoft? SQL Server)中導(dǎo)入。DataTable 類是“.NET 框架類庫(kù)”中 System.Data 命名空間的成員。您可以獨(dú)立創(chuàng)建和使用 DataTable,或者可以將其用作 DataSet 的成員,而且 DataTable 對(duì)象也可以與其他 .NET 框架對(duì)象(包括 DataView)一起使用。您可以通過(guò) DataSet 對(duì)象的 Tables 屬性來(lái)訪問(wèn) DataSet 中表的集合。表的架構(gòu)或結(jié)構(gòu)由列和約束表示。使用 DataColumn 對(duì)象以及 ForeignKeyConstraint 和 UniqueConstraint 對(duì)象定義 DataTable 的架構(gòu)。表中的列可以映射到數(shù)據(jù)源中的列、包含從表達(dá)式計(jì)算所得的值、自動(dòng)遞增它們的值,或包含主鍵值。除架構(gòu)以外,DataTable 還必須具有行,在其中包含數(shù)據(jù)并對(duì)數(shù)據(jù)排序。DataRow 類表示表中包含的實(shí)際數(shù)據(jù)。DataRow 及其屬性和方法用于檢索、計(jì)算和操作表中的數(shù)據(jù)。在訪問(wèn)和更改行中的數(shù)據(jù)時(shí),DataRow 對(duì)象會(huì)維護(hù)其當(dāng)前狀態(tài)和原始狀態(tài)。您可以使用表中的一個(gè)或多個(gè)相關(guān)的列來(lái)創(chuàng)建表與表之間的父子關(guān)系。DataTable 對(duì)象之間的關(guān)系可使用 DataRelation 來(lái)創(chuàng)建。然后,DataRelation 對(duì)象可用于返回某特定行的相關(guān)子行或父行。創(chuàng)建數(shù)據(jù)表 DataTable 表示一個(gè)內(nèi)存內(nèi)關(guān)系數(shù)據(jù)的表,可以獨(dú)立創(chuàng)建和使用,也可以由其他 .NET 框架對(duì)象使用,最常見(jiàn)的情況是作為 DataSet 的成員使用。DataTable 對(duì)象可通過(guò)使用 DataTable 構(gòu)造函數(shù)來(lái)創(chuàng)建,或者可通過(guò)將構(gòu)造函數(shù)參數(shù)傳遞到 DataSet 的 Tables 屬性的 Add 方法(它是一個(gè) DataTableCollection)來(lái)創(chuàng)建。DataTable 對(duì)象可通過(guò)使用 DataAdapter 對(duì)象的 Fill 方法或 FillSchema 方法在 DataSet 內(nèi)創(chuàng)建,或者可使用 DataSet 的 ReadXml、ReadXmlSchema 或 InferXmlSchema 方法從預(yù)定義的或推斷的 XML 架構(gòu)中創(chuàng)建。請(qǐng)注意,將 DataTable 添加為一個(gè) DataSet 的 Tables 集合的成員后,不能再將其添至任何其他 DataSet 的表的集合。最初創(chuàng)建 DataTable 時(shí),它是沒(méi)有架構(gòu)(結(jié)構(gòu))的。要定義表的架構(gòu),必須創(chuàng)建 DataColumn 對(duì)象并將其添至表的 Columns 集合。您也可以為表定義主鍵列,而且可以創(chuàng)建 Constraint 對(duì)象并將其添至表的 Constraints 集合。在為 DataTable 定義了架構(gòu)之后,可通過(guò)將 DataRow 對(duì)象添至表的 Rows 集合來(lái)將數(shù)據(jù)行添加到表。創(chuàng)建 DataTable 時(shí),不需要為 TableName 屬性提供值,您可以在其他時(shí)間指定屬性,或者將其保留為空。但是,在將沒(méi)有 TableName 值的表添至 DataSet 時(shí),該表就會(huì)得到一個(gè)遞增的默認(rèn)名稱 TableN,此名稱以“Table”開(kāi)頭,從 Table0 開(kāi)始。注意 建議您在提供 TableName 值時(shí)避免使用“Table”或“TableN”的命名規(guī)則,因?yàn)槟峁┑拿Q可能會(huì)與 DataSet 中現(xiàn)有的默認(rèn)表名稱沖突。如果提供的名稱已經(jīng)存在,將引發(fā)異常。以下示例創(chuàng)建 DataTable 對(duì)象的實(shí)例,并為其指定名稱“Customers”。C#DataTable workTable = new DataTable(Customers);以下示例創(chuàng)建 DataTable 實(shí)例,方法是:將其添至 DataSet 的 Tables 集合。C#DataSet custDS = new DataSet();DataTable custTable = custDS.Tables.Add(CustTable);創(chuàng)建和使用 DataView DataView 使您能夠創(chuàng)建 DataTable 中所存儲(chǔ)的數(shù)據(jù)的不同視圖,這種功能通常用于數(shù)據(jù)綁定應(yīng)用程序。使用 DataView,您可以公開(kāi)表中具有不同排序順序的數(shù)據(jù),并且可以按行狀態(tài)或基于篩選器表達(dá)式來(lái)篩選數(shù)據(jù)。DataView 提供數(shù)據(jù)的動(dòng)態(tài)視圖,其內(nèi)容、排序和成員關(guān)系會(huì)實(shí)時(shí)反映對(duì)基礎(chǔ) DataTable 的更改。它不同于 DataTable 的 Select 方法,后者從表中按特定的篩選器和/或排序順序返回 DataRow 數(shù)組,雖然其內(nèi)容反映對(duì)基礎(chǔ)表的更改,但其成員關(guān)系和排序卻則保持靜態(tài)。DataView 的動(dòng)態(tài)功能使其成為數(shù)據(jù)綁定應(yīng)用程序的理想選擇。與數(shù)據(jù)庫(kù)提供的視圖類似,DataView 為您提供了可向其應(yīng)用不同排序和篩選條件的單個(gè)數(shù)據(jù)集的動(dòng)態(tài)視圖。但是,DataView 和數(shù)據(jù)庫(kù)視圖之間相當(dāng)不同的一點(diǎn)在于 DataView 不能作為表來(lái)進(jìn)行處理,并且不能提供聯(lián)接表的視圖。另外,還不能排除存在于源表中的列,也不能追加不存在于源表中的列(如計(jì)算列)??梢允褂?DataViewManager 來(lái)管理 DataSet 中所有表的視圖設(shè)置。DataViewManager 為您提供了一種方便的方法來(lái)管理每個(gè)表的默認(rèn)視圖設(shè)置。在將一個(gè)控件綁定到 DataSet 的多個(gè)表時(shí),綁定到 DataViewManager 是理想的選擇。創(chuàng)建 DataView 創(chuàng)建 DataView 的方法有兩種??梢允褂?DataView 構(gòu)造函數(shù),也可以創(chuàng)建對(duì) DataTable 的 DefaultView 屬性的引用。DataView 構(gòu)造函數(shù)可以為空,也可以通過(guò)單個(gè)參數(shù)的形式采用 DataTable 或者同時(shí)采用 DataTable 與篩選條件、排序條件和行狀態(tài)篩選器。有
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年曲靖師范學(xué)院輔導(dǎo)員考試真題
- 以業(yè)績(jī)?yōu)閷?dǎo)向的工作規(guī)劃計(jì)劃
- 2025屆浙江省新昌縣聯(lián)考七下數(shù)學(xué)期末預(yù)測(cè)試題含解析
- 手術(shù)室流程優(yōu)化與反思計(jì)劃
- 2024年寧波市附海鎮(zhèn)招聘工作人員筆試真題
- 2024年國(guó)務(wù)院國(guó)資委研究中心招聘筆試真題
- 軟件更新管理測(cè)試題及答案分析
- 避開(kāi)雷區(qū)2025年法學(xué)概論考試試題及答案
- 2025屆吉林省延邊七年級(jí)數(shù)學(xué)第二學(xué)期期末統(tǒng)考模擬試題含解析
- 客戶端與服務(wù)器設(shè)計(jì)考察試題及答案
- 2024年四川西華師范大學(xué)招聘輔導(dǎo)員筆試真題
- 2025年河南省洛陽(yáng)市中考數(shù)學(xué)一模試卷
- 2025年武漢鐵路局集團(tuán)招聘(180人)筆試參考題庫(kù)附帶答案詳解
- 信息安全管理員-初級(jí)工練習(xí)題(附答案)
- 深圳學(xué)位鎖定合同協(xié)議
- 2025全國(guó)不動(dòng)產(chǎn)登記代理人《不動(dòng)產(chǎn)登記代理實(shí)務(wù)》考試真題(附完整解析)
- 農(nóng)產(chǎn)品供應(yīng)鏈應(yīng)急保障措施
- 食品原料報(bào)廢管理制度
- 2025年高級(jí)政工師理論考試題庫(kù)(濃縮500題)
- 鄉(xiāng)村振興學(xué)習(xí)課件
- 2025年施工現(xiàn)場(chǎng)質(zhì)量員繼續(xù)教育考試題庫(kù)(繼續(xù)教育)含答案
評(píng)論
0/150
提交評(píng)論