詳細說明ADO.NET應用程序進行使用
下一示例以上例為基礎,將四個表關聯在一起,并瀏覽這些關系。如上例所示,CustomerID使Customers表與Orders表相關聯。對于Customers表中的每個客戶,將確定Orders表中的所有子行,以返回特定客戶的訂單數以及他們的OrderID值。
該擴展示例還將返回OrderDetails表和Products表中的值。Orders表使用OrderID與OrderDetails表相關聯,以確定在每一客戶訂單中訂購的產品及數量。由于OrderDetails表只包含已訂購產品的ProductID,OrderDetails將使用ProductID與Products相關聯,以返回ProductName。在這一關系中,Products表為父表,而OrderDetails表為子表。因此,當循環訪問OrderDetails表時,將調用GetParentRow來檢索相關的ProductName值。#t#
請注意,當為Customers表和Orders表創建ADO.NET DataRelation時,沒有為createConstraints標志指定任何值(默認為true)。它假定Orders表中的所有行都具有一個存在于父Customers表中的CustomerID值。如果CustomerID存在于Customers表之外的Orders表中,則ForeignKeyConstraint將引發異常。
如果子列可能包含父列不包含的值,添加DataRelation時請將createConstraints標志設置為false。在該示例中,對于Orders表和OrderDetails表之間的DataRelation,createConstraints標志將設置為false。這樣,應用程序就可以返回OrderDetails表中的所有記錄并只返回Orders表中記錄的子集,而不會生成運行時異常。該擴展示例生成以下格式的輸出。
ADO.NET應用程序要從數據源里讀取數據,首先得創建一個連接對象.這個連接對象可以是SQLConnection 或是 ADOConnection,這取決于所采用的目標提供程序. 需要記住的是,雖然在這里不做推薦,但你也可以利用ADO .NET 類來連接到SQL Server數據庫. 這種方法***不足是,代碼需要通過一個不必要的額外代碼層. 首先它會調入ADO的托管提供程序, 然后ADO的托管提供程序再調用SQL Server OLE DB 提供程序. 如同OLE DB 提供程序做的一樣,SQL Server 托管提供程序會直接操作數據。#t#
在這些數據提供者中都有一個DataAdapter類,如:OLE DB .NET Framework 數據提供者中是 OleDbDataAdapter類,The SQL Server .NET Framework 數據提供者中是SqlDataAdapter類,The ODBC .NET Framework 數據提供者中是OdbcDataAdapter類。通過這些DataAdapter就能夠實現從數據庫中檢索數據并填充 DataSet 中的表。