在Microsoft Office System中使用ADO.NET数据集
.NET;ADO.NET;Microsoft Office System
Don Kiely
2004年3月
适用于:
·Microsoft® Office Word 2003
·Microsoft Office Excel 2003
·Microsoft Visual Studio® Tools for the Microsoft Office System
摘要: 与基于Microsoft Office的应用程序进行数据交互是现实世界中解决方案的重要组成部分。 ADO.NET是Microsoft .NET Framework 中强大、灵活的数据访问层,它使各种应用程序之间数据的互用性变得更容易,更易于扩展。本文讨论如何创建 ADO.NET DataSet对象,并在Microsoft Office系统中使用这些对象,从而在Office解决方案和ADO.NET间建立联系。
目录
使用 Visual Studio Tools for the Microsoft Office System
导言
在Microsoft Windows®开发环境中,.NET Framework和 Microsoft® Visual Studio® .NET开发工具为创建高效的应用程序,创建安全的应用程序建立了高标准,并且提供为分布式应用程序提供了固有支持(硬基础)。 .NET-based tools make Windows programming fun again.
虽然微软逐渐将.NET Framework融合到她的各种产品中,但是,在Microsoft Office中并无对.NET的直接支持。Microsoft Office System利用.NET Framework实现了许多扩展和新功能,但是它的核心对象仍然是基于COM的——多年来一直如此。
但是,那并不意味着Microsoft Office System和基于.NET的开发相互矛盾,不可协作。相反,Microsoft已经在Microsoft Office System建立了COM interop,这使得合并这两个平台的功能变得非常容易。其中最令人激动的一个工具就是Microsoft Visual Studio Tools for the Microsoft Office System,该工具使你可以编写在Microsoft Office Excel 2003 或Microsoft Office Word 2003文档中执行的托管代码。
一个常见的编程任务就是从数据库中读取数据并在Office文档中使用这些数据。Microsoft Visual Basic® for Applications (VBA)很早就已经支持多种数据访问技术,包括Data Access Object (DAO),以及最近的Microsoft ActiveX® Data Objects (ADO)。虽然这完全满足了很多编程需求,但是,ADO.NET在访问数据库上有了巨大的改进,特别是当创建断开式数据集合和与结合XML时。经常在Microsoft Office System 文档中使用的ADO.NET对象是DataSet,DataSet可以包含来自一个数据库的多个数据集。但是没有一种简单的方法在VBA应用程序中使用ADO.NET对象,你不得不编写.NET兼容的代码来创建一个对象并将它插入到Office 文档中。
ADO.NET数据访问层
ADO.NET是.NET Framework的数据访问部分,它包含在System.Data命名空间。它提供一套丰富的对象,用于对几乎任何种类的数据存储的连接式和断开式访问,当然包括关系型数据库。当使用DataSets时,你通常需要使用Connection, Command, Data Adapter, 和 DataSet对象。这看起来需要很多工作,但是它们非常易于使用,并且你常常能够回避精确的创建一个或多个这些对象。
当用数据填充一个DataSet时,通常要使用SqlConnection 和 SqlDataAdaptor对象。SqlConnection对象包含数据库连接的基本信息。SqlCommand对象结合连接对象与针对数据库执行的特殊指令,这些指令包括SQL语句、存储过程名和任何必须的参数。SqlDataAdapter 使用连接信息连接到数据库,执行命令并返回数据,最后将数据放置在一个DataSet中。注意到所得到的DataSet并没有数据从何而来的任何信息,它可能来自Microsoft SQL Server或任何其他数据源,甚至可能是在内存中匆匆创建的。
读取数据时,如果你具有一个数据库的持久连接,你也可以使用SqlDataReader对象。这个对象提供对数据库的快速的只进、只读访问,是一种迅速从数据库中获得数据的方式。SqlDataReader只适用于数据库提供数据的情况,因为它与数据库保持连接直到数据库连接关闭或者读取完毕最后一个数据。
任何使用ADO.NET DataSets的数据访问必须用到两套对象:一套针对于你的代码所访问的数据源,另一套容纳数据,但其中不包含与数据源相关的任何信息。例如,为了使用Microsoft SQL Server 2000中的Northwind数据库,你需要在ADO.NET和.NET Framework中使用System.Data.SqlClient命名空间以便于有效的访问数据。System.Data.SqlClient命名空间中的对象只能工作在SQL 7.0及更新版本下,如果你要使用其他后台数据库,你必须使用不同但是功能等效的对象,例如那些用于OLE DB, Oracle, 或ODBC数据库的对象。
让我们看看如何在数据访问层使用ADO.NET对象,从而建立在Office应用程序中使用它们的基础。