1 / 41

第 10 章 ADO.NET 與 XML

第 10 章 ADO.NET 與 XML. 簡介 ADO.NET - 什麼是 ADO.NET. ADO 的全名為 ActiveX Data Objects ,是早期 Microsoft 提供給程式設計師在程式設計時,運用 OLE DB 的應用程式設計介面( Application Programming Interface )。 那什麼是 OLE DB 呢? OLE DB 技術是由 Microsoft 所提出的 Component Object Model ( COM )介面集合,用於提供程式設計師一個一致性的資料存取介面,方便存取儲存於不同資訊來源的資料。.

kendis
Download Presentation

第 10 章 ADO.NET 與 XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 10 章 ADO.NET與XML

  2. 簡介ADO.NET- 什麼是ADO.NET • ADO的全名為ActiveX Data Objects,是早期Microsoft提供給程式設計師在程式設計時,運用OLE DB的應用程式設計介面(Application Programming Interface)。 • 那什麼是OLE DB呢?OLE DB技術是由Microsoft所提出的Component Object Model(COM)介面集合,用於提供程式設計師一個一致性的資料存取介面,方便存取儲存於不同資訊來源的資料。

  3. 簡介ADO.NET- ADO.NET架構

  4. 簡介ADO.NET- ADO.NET架構 • ADO.NET架構中主要提供兩種資料存取方式: • .NET Framework資料提供者 • DataSet物件

  5. .NET Framework資料提供者- 資料提供者簡介 • ADO.NET架構中主要負責資料存取的類別為System.Data,在此類別中主要提供與不同資料來源建立連線的功能,各種資料存取元件,例如:DataSet、DataTable、DataRow及DataColumn等,因此可以利用此這些元件進行資料處理動作。 • 由於各種不同的資料來源有不同的存取介面,因此在System.Data類別中提供了不同的資料來源命名空間,常見的如下: • System.Data.Odbc • System.Data.OleDb • System.Data.OracleClient • System.Data.SqlClient

  6. .NET Framework資料提供者- 資料提供者簡介 • 在.NET Framework中的資料提供者主要會提供兩種資料存取模式: • 連線模式 • 離線模式

  7. .NET Framework資料提供者- 資料提供者簡介 • 在.NET Framework中的資料提供者主要會提供兩種資料存取模式: • 連線模式 • 離線模式 • 連線模式主要經由以下四個元件類型達成 • Connection • Command • DataAdapter • DataReader

  8. .NET Framework資料提供者- 建立資料庫連結 • 在ASP.NET網頁中,操作資料庫的第一步就是要建立網頁與資料庫的連結。ADO.NET物件用於建立與資料庫的連結之物件為Connection物件。 • 以下語法運用System.Data.OleDb類別示範,將在程式中引入System.Data.OleDb命名空間。 Import Namespace="System.Data.OleDb" • 接著,建立一個OleDbConnection物件,並設定某物件變數為該型態的變數。 Dim 物件變數 as OleDbConnection

  9. .NET Framework資料提供者- 建立資料庫連結 • 有了物件變數後,可以使用New關鍵字產生一個OleDbConnection物件實體,並將物件變數指向該實體,其宣告語法如下: 物件變數 = new OleDbConnection() • 以下敘述將建立一個OleDbConnection物件,並由New關鍵字產生實體物件後,由變數指向該實體物件。

  10. .NET Framework資料提供者- 建立資料庫連結 • 完成OleDbConnection物件的建立後,接著,必須透過ConnectionString屬性設定連線字串,以便在建立資料庫連線時正確的找到資料庫位置,並建立連線。 • 以下語法以連結到Access資料庫檔案為例,示範如下: "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=資料庫路徑名稱“ • 以下語法利用connOleDb物件開啟Web伺服器上的BookDB.mdb,由於該資料庫存在於ASP.NET網頁所在的目錄下,因此,資料庫的路徑與名稱可利用Server物件的MapPath()方法取得。

  11. .NET Framework資料提供者- 建立資料庫連結 • Connection物件的關閉與重設當使用完Connection物件後,您可以呼叫Close()方法,關閉資料庫的連結,語法如下: 資料提供者Connection物件變數.Close() • 完成關閉資料庫連結後,.NET共通執行環境將自動回收未使用的記憶體空間。例如:

  12. .NET Framework資料提供者- DataAdapter的觀念與操作 • 與資料來源建立連線首先建立一個OleDbDataAdapter物件,並設定某物件變數為該型態的變數。 Dim 物件變數 as OleDbDataAdapter • 有了物件變數後,可以使用New關鍵字產生一個OleDbDataAdapter物件實體,並將物件變數指向該實體,其宣告語法如下: 物件變數 = new OleDbConnection()

  13. .NET Framework資料提供者- DataAdapter的觀念與操作 • OleDbDataAdapter的初始建構子共有四種參數類型可使用,如下所示:

  14. .NET Framework資料提供者- DataAdapter的觀念與操作 • 以下敘述將建立一個OleDbConnection物件,並由New關鍵字產生實體物件後,由變數指向該實體物件。同時使用OleDbDataAdapter(String,String)的建構子做為初始化物件方式,其中,第一個String以Select語法取得Book資料表中所有的資料列,第二個String則指定連接到BookDB.mdb的Access資料庫檔案。

  15. .NET Framework資料提供者- DataAdapter的觀念與操作 • 以下敘述將建立一個OleDbConnection物件,並由New關鍵字產生實體物件後,由變數指向該實體物件。同時使用OleDbDataAdapter(String,String)的建構子做為初始化物件方式,其中,第一個String以Select語法取得Book資料表中所有的資料列,第二個String則指定連接到BookDB.mdb的Access資料庫檔案。

  16. .NET Framework資料提供者- DataAdapter的觀念與操作 • 取得資料來源中的資料建立負責資料存取的DataAdapter實體物件後,接下來便是要取得其資料,在此DataAdapter提供了Fill()方法,此方法可以將資料填入到所指定的物件中,例如:DataSet及DataTable中,之後再運用此物件進行資料存取與展示的動作。

  17. .NET Framework資料提供者- DataAdapter的觀念與操作 • 以下敘述將建立一個DataSet物件,並實作DataSet實體物件: Dim 物件變數 as DataSet = new DataSet() • 之後再利用DataAdapter的Fill()方法將資料填入到物件中: DataAdapter.Fill(DataSet物件變數)

  18. .NET Framework資料提供者- DataAdapter的觀念與操作 • Fill()方法的定義中,除了會將資料填入到指定的物件變數外,亦會傳回填入的資料筆數,此時可以使用整數變數接收資料筆數值,如下所示:

  19. .NET Framework資料提供者- DataSet的觀念與操作 • DataTable 類別提供資料表格存放時所需的方法與屬性,主要由代表列的DataRow類別與代表行DataColumn類別組成。下圖以一個聯絡資料的資料表格來表示,其中Index、Name、Category、Address及Other代表行名稱,行名稱由DataColumn類別處理,而每一列資料則由DataRow類別處理,示意如下:

  20. .NET Framework資料提供者- DataSet的觀念與操作 • DataTable透過Columns屬性指向一個DataColumnCollection類別的實體物件,DataColumnCollection類別儲存DataColumn物件的集合。 • DataTable透過Rows屬性則指向DataRowCollection類別實體物件,其儲存DataRow物件的集合。

  21. .NET Framework資料提供者- DataSet的觀念與操作 • DataTable常用的屬性如下表所示:

  22. .NET Framework資料提供者- DataSet的觀念與操作 • DataTable中與XML有關的方法如下表所示:

  23. .NET Framework資料提供者- DataSet的觀念與操作 • DataColumn類別DataColumn類別將操作單一Column,因為DataColumn是模擬資料表內容,當建立資料表時,資料庫所需設定的欄位資訊,如:欄位名稱、資料型態及預設值等資訊,DataColumn類別亦提供了相對應的屬性,下表為常用屬性:

  24. .NET Framework資料提供者- DataSet的觀念與操作 • DataRow類別DataRow類別主要處理單一資料列,建立單一的DataRow物件時,必須由具有DataColumn的DataTable變數中,透過NewRow()方法產生一筆新的資料列,並指定給DataRow變數,語法如下: Dim DataRow變數 as DataRow = DataTable變數.NetRow()

  25. .NET Framework資料提供者- DataSet的觀念與操作 • 有了DataRow變數後,再透過Item屬性存取資料列中的每一個資料行,底下以前面介紹過的資料表來說明: • 當DataRow變數指向一筆資料列時,透過DataRow的Item屬性存取每一個欄位,例如:Index、Name、Category…等,常見存取語法如下: DataRow(資料列索引值).Item(資料行索引值) DataRow(資料列索引值).Item("資料行名稱") • 其中資料列索引值及資料行索引值皆以0做為起始值,因此使用上需特別留意。

  26. .NET Framework資料提供者- DataSet的觀念與操作 • DataSet與資料來源繫結範例10-7將透過OleDbDataAdapter物件連結Access資料庫檔案,並取回資料表- Book內容,首先以程式方式顯示各資料行名稱,最後以繫結到GridView控制項,做為資料展示方式。

  27. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • 由DataSet匯出成XML文件格式當DataSet物件中擁有資料時,就可以使用WriteXml()方法將資料以XML格式做匯出,常用的WriteXml()方法建構子如下表所示。

  28. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • 以下程式碼使用WriteXml()方法,並帶入XML檔案路徑與預計寫入的檔案名稱: DataSet物件變數.WriteXml( Server.MapPath(".") & "\dsXML.XML") • 由於在Web環境中通常不使用絕對路徑做為存取檔案方式,因此這裡透過Server變數的MapPath()方法。方法中的“.”代表當下網站的根目錄,因此Server.MapPath(“.”)便可以取得網站執行時的路徑,如: • 此時再加上"\dsXML.XML"的XML檔案名稱便可以組合成完整的檔案路徑:

  29. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • 若您想要讓XML中的Table名稱與原始的資料表名稱一致時,則可在執行匯出動作前,先變更DataSet中DataTable的TableName屬性值,例如: DataSet物件變數.Tables(索引值).TableName = "Book" • 此時匯出的標籤名稱將變成<Book></Book>

  30. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • 由DataSet匯出成XML Schema文件格式DataSet同時也提供將資料匯出成XML Schema檔案的方法- WriteXmlSchema(),此方法將匯出成xsd檔案,以搭配xml檔案做使用,方法建構子如下:

  31. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • WriteXmlSchema寫入到檔案的方式與WriteXml類似,例如: DataSet物件變數.WriteXmlXml( Server.MapPath(".") & "\dsXML.xsd")

  32. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • DataSet匯入XML文件格式當有XML文件欲匯入到DataSet中做使用時,只要透過ReadXml()方法即可,其常用方法如下表所示:

  33. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • 以下為以ReadXml(String)方法將XML檔案匯入的範例: DataSet物件變數.ReadXml( Server.MapPath(".") & "\dsXML.XML") • 方法中指定路徑及檔案名稱的方式,即可將XML檔案匯入至DataSet。

  34. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • DataSet匯入XML Schema文件格式當有XML Schema文件欲匯入到DataSet中做使用時,只要透過ReadXmlSchema()方法即可,其常用方法如下表所示:

  35. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • 以下為以ReadXmlSchema(String)方法將XML檔案匯入的範例: DataSet物件變數.ReadXmlSchema( Server.MapPath(".")& "\dsXML.XSD") • 在方法中指定路徑及檔案名稱即可將XML Schema檔案匯入DataSet。

  36. DataSet物件與XML- DataSet記錄與XML的匯入匯出 • DataSet匯出XML文件並顯示在網頁上若希望直接以XML格式的方式直接呈現在網頁上時,此時可以透過DataSet的GetXml()方法,直接將取得的XML格式字串寫入到網頁中。

  37. DataSet物件與XML- DataSet與XML資料的整合 • DataSet以表格化的方式儲存及處理資料,好處在於與資料庫的結構相同,方便將資料庫與DataSet做整合運用,但XML資料則是以階層為主的結構,節點的存取方式讓解析XML資料的程式方便做搜尋與儲存。 • DataSet與XML資料分別代表關聯式與階層式的資料結構,為了讓這兩者的資料能夠互相整合運用,因此.NET提供兩種類別做為DataSet與XML資料的溝通媒介,分別為XmlDocument及XmlDataDocument。

  38. DataSet物件與XML- DataSet與XML資料的整合

  39. DataSet物件與XML- DataSet與XML資料的整合 • XmlDataDocument類別中的常用屬性如下表所示:

  40. DataSet物件與XML- DataSet與XML資料的整合 • XmlDataDocument類別的常用方法

  41. DataSet物件與XML- DataSet與XML資料的整合 • XmlDataDocument類別的常用方法

More Related