建立ADO.NET模型問題
ADO.NET模型對于各種數(shù)據(jù)提供者的DataAdapter,具體的實現(xiàn)檢索數(shù)據(jù)庫中的數(shù)據(jù)并填充DataSet的實現(xiàn)方法類似于以上方法。上面就進行ADO.NET模型的解釋說明。。。。。
DataRelationCollection對象就是管理DataSet中所有ADO.NET模型之間的DataRelation關(guān)系的。在DataSet中DataSet、DataTable和DataColumn都具有ExtendedProperties屬性。ExtendedProperties其實是一個屬性集(PropertyCollection),用以存放各種自定義數(shù)據(jù),如生成數(shù)據(jù)集的SELECT語句等。
使用DataSet:
DataSet其實就是數(shù)據(jù)集,上文已經(jīng)說過DataSet是把數(shù)據(jù)庫中的數(shù)據(jù)映射到內(nèi)存緩存中的所構(gòu)成的數(shù)據(jù)容器,對于任何數(shù)據(jù)源,它都提供一致的關(guān)系編程模型。在DataSet中既定義了數(shù)據(jù)表的約束關(guān)系以及數(shù)據(jù)表之間的關(guān)系,還可以對數(shù)據(jù)表中的數(shù)據(jù)進行排序等。ADO.NET模型使用方法一般有三種:
1. 把數(shù)據(jù)庫中的數(shù)據(jù)通過DataAdapter對象填充DataSet。
2. 通過DataAdapter對象操作DataSet實現(xiàn)更新數(shù)據(jù)庫。
3. 把XML數(shù)據(jù)流或文本加載到DataSet。
下面就來詳細探討以上DataSet使用方法的具體實現(xiàn),使用語言是C#。
把數(shù)據(jù)庫中的數(shù)據(jù)通過DataAdapter對象填充DataSet:
掌握DataSet使用方法必須掌握ADO.NET模型另外一個核心常用成員--數(shù)據(jù)提供者(Data Provider)。數(shù)據(jù)提供者(也稱為托管提供者Managed Provider)是一個類集合,在.Net FrameWork SDK 1.0中數(shù)據(jù)提供者分為二種:
The SQL Server .NET Data Provider和The OLE DB .NET Data Provider。而到了ADO.NET模型1時,ADO.NET中又增加了The ODBC .NET Data Provider和 The Oracle .NET Data Provider二個數(shù)據(jù)提供者。The SQL Server .NET Data Provider的操作數(shù)據(jù)庫對象只限于Sql Server 7.0及以上版本,Oracle .NET Data Provider的操作數(shù)據(jù)庫對象只限于Oracle 8.1.7及以上版本。而The OLE DB .NET Data Provider和The ODBC .NET Data Provider可操作的數(shù)據(jù)庫類型就相對多了許多,只要它們在本地分別提供Ole Db提供程序和ODBC提供程序。#t#
在這些數(shù)據(jù)提供者中都有一個DataAdapter類,如:OLE DB .NET Framework 數(shù)據(jù)提供者中是 OleDbDataAdapter類,The SQL Server .NET Framework 數(shù)據(jù)提供者中是SqlDataAdapter類,The ODBC .NET Framework 數(shù)據(jù)提供者中是OdbcDataAdapter類。通過這些DataAdapter就能夠?qū)崿F(xiàn)從數(shù)據(jù)庫中檢索數(shù)據(jù)并填充 DataSet 中的表。
DataAdapter填充DataSet的過程分為二步:首先通過DataAdapter的SelectCommand屬性從數(shù)據(jù)庫中檢索出需要的數(shù)據(jù)。SelectCommand其實是一個Command對象。然后再通過DataAdapter的Fill方法把檢索來的數(shù)據(jù)填充 ADO.NET模型。代碼清單01就是以Microsoft SQL Server 中的Northwind數(shù)據(jù)庫為對象,C#使用The SQL Server .NET Data Provider中的SqlDataAdapter填充DataSet的具體實現(xiàn)方法: