詳細解讀ADO.NET控制相關(guān)技巧
ADO.NET控制作為一個高效的.NET程序語言。其混合了函數(shù)語言和物件導向程序編制語言,并且完美的適用于編程、算法、技術(shù)和探索性開發(fā),因此可以在使用的過程當中感受到趣味性和吸引力。
創(chuàng)建 DataRelation 所需的參數(shù)是所創(chuàng)建的 DataRelation 的名稱以及對用作關(guān)系中父列和子列的那些列的一個或多個 DataColumn 引用的數(shù)組。 當創(chuàng)建 DataRelation 后,可以使用它在多個表之間導航和檢索值。#t#
默認情況下,向 DataSet 中添加 DataRelation 會將一個 UniqueConstraint 添加到父表中并將一個 ForeignKeyConstraint 添加到子表中。 有關(guān)這些默認約束的更多信息,請參見數(shù)據(jù)表約束 (ADO.NET)。
以下代碼示例使用 DataSet 中的兩個 DataTable 對象來創(chuàng)建一個 DataRelation。 每個 DataTable 包含一個名為 CustID 的列,它用作兩個 DataTable 對象之間的鏈接。 該示例將單個 DataRelation 添加到 DataSet 的 Relations 集合中。 該示例中的第一個參數(shù)指定所創(chuàng)建的 DataRelation 的名稱。 第二個參數(shù)設置父 DataColumn,第三個參數(shù)設置子 DataColumn。
- customerOrders.Relations.Add("CustOrders",
- customerOrders.Tables["Customers"].Columns["CustID"],
- customerOrders.Tables["Orders"].Columns["CustID"]);
DataRelation 也具有 Nested 屬性,如果該屬性設置為 true,則來自子表的行會在使用 WriteXml 以 XML 元素形式編寫時嵌套在來自父表的關(guān)聯(lián)行中。 有關(guān)更多信息,請參見在數(shù)據(jù)集中使用 XML (ADO.NET)。
在某一時刻只有一個DataReader能夠打開。。在ADO中,如果你打開一個連接并請求兩個使用只向前的只讀游標的記錄集,ADO隱性地為游標的生命周期的數(shù)據(jù)存儲打開第二個不在連接池中的連接,接著隱性地關(guān)閉它。在ADO.NET控制中,如果你想在同一個數(shù)據(jù)存儲上同時打開兩個DataReader,你必須明確地建立兩個連接,每個DataReader一個。通過這種方法ADO.NET給了你對連接池使用的更多控制。
默認情況下,DataReader在每個Read方法中把整個行載入內(nèi)存中。這允許你隨機訪問當前行的任意列。如果隨機訪問是不必要的,為了提高性能,把CommandBehavior.SequentialAccess傳遞給ExecuteReader調(diào)用。這改變了DataReader的默認行為,只在需要時才把數(shù)據(jù)載入內(nèi)存。注意CommandBehavior.SequentialAccess要求你按次序訪問返回的列。也就是,一旦你讀過了返回的某個列,就不能再次讀取它的值了。