ADO.NET 对象模型
ADO.NET 对象模型中有五个主要的组件,分别是 Connection 对象、 Command 对象、
DataSetCommand DataSet 以及 DataReader 。这些组件中 负责建立联机和数据操作的部分
我们称为数据操作组件( Managed Providers ,分别由 Connection 对象、 Command 对象、 DataSetCommand 对象以及 DataReader 对象所组成。数据操作组件最主要是当作 DataSet 象以及数据源之间的桥梁,负责将数据源中的数据取出后植入 DataSet 对象中,以及将数据存 回数据源的工作。
Connection 对象
Connection 对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无 法从数据库中取得数据的。这个物件在 ADO.NET 的最底层,我们可以自己产生这个对象,或是 由其它的对象自动产生。
Command 对象
Command 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。这个对象是架构在 Connection 对象上,也就是 Command 对象是透过连结到数据源的 Connection 对象来下命令的;所以 Connection 连结到哪个数据库, Command 对象的命令就下到哪里。
DataSetCommand 对象
DataSetCommand 对象主要是在数据源以及 DataSet 之间执行数据传输的工作,它可以透过
Command 对象下达命令后,并将取得的数据放入 DataSet 对象中。这个对象是架构在 Command 对象上,并提供了许多配合 DataSet 使用的功能。在 Beta 2 版中 DataSetCommand 物件会更名为 DataAdapter
DataSet 对象
DataSet 这个对象可以视为一个暂存区( Cache ),可以把从数据库中所查询到的数据保留起来, 甚至可以将整个数据库显示出来。 DataSet 的能力不只是可以储存多个 Table ,还可以透过 DataSetCommand 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。
DataSet 对象可以说是 ADO.NET 中重量级的对象,这个对象架构在 DataSetCommand 对象上,本身 不具备和数据源沟通的能力 ;也就是说我们是将 DataSetCommand 对象当做 DataSet 对象以及数据源间传输数据的桥梁。
DataReader 对象
当我们只需要循序的读取数据而不需要其它操作时,可以使用 DataReader 对象。 DataReader
对象只是一次一笔向下循序地读取数据源中的数据,不作其它的操作。因为 DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。此外,因为不用把数据全部传回,故可以降低网络的负载。
 
 
ADO.NET 的数据操作组件( Managed Providers
ADO.NET 的数据存取和之前的版本不一样。前版的 ADO 存取数据的方式只有一种,那就是透 OLE DB 来存取数据;而现在的 ADO.NET 则分为两种,一种是直接存取 MS SQL Server 的数据,另一种是透过 OLE DB 来存取其它数据库中的数据。前面我们提过: 要存取数据源中 的数据,要透过数据操控组件 。这个数据操作组件就是 Connection 对象、 Command 对象、 DataSetCommand 对象以及 DataReader 对象。由于我们可以选择透过 OLE DB 和资料源联机,或是和 MS SQL Server 直接联机;所以 ASP.NET 提供了两组数据操作组件,分别为 ADO 数据操作组件以及 SQL 数据操作组件
每组数据操作组件内都有 Connection 对象、 Command 对象、 DataSetCommand 对象及
DataReader 对象。这两种数据操作组件虽然针对的数据源不一样,但是这些对象的架构都一样。例如 ADOConnection SQLConnection 对象虽然一个是针对 OLE DB ,而另一个是针对 MS SQLServer ,但是这两个对象都有一样的属性、事件及方法,所以使用起来并不会造成困扰;只要针对所要建立的数据源种类来选择 ADO 数据操作组件,或是 SQL 数据操作组件就可以了。虽然我们也可以透过 OLE DB 来存取 MS SQL Server 中的资料,但是透过 SQL 类别对象来存取 MS SQL Server 中的数据效率最好;这是因为 SQL 类别不经过 OLE DB 这一层,而是直接呼叫 MS SQL Server 中的 API ,所以效率比较好。 ADO.NET 对于这两种数据存取方式所使用的对象完全不一样,在使用的时候必须要特别注意。