本书深入浅出地介绍了ADO与ADO.NET编程,介绍用这两种API编写适用于各种数据源和前端的数据访问代码,介绍如何用ADO技术支持遗留系统,如何利用ADO.NET的特殊功能,如XML支持与切断数据。还介绍了结构修改、数据同步、多维累计之类的功能。书中详细介绍了客户端与服务器方功能,还介绍了SQLSever、Oracle和Jet,VisualBasic、Access和Excel,还可以充分利用.NET平台的特性。本书是数据库编程方面的优秀读物,非常适合于开发人员使用.前言我在PC机上使用的第一个数据库是PC-File,也许你根本没有听说过,当时这是Buttonware公司的产品(该公司是JimButton创办的,他是“共享件之父”),是相当高级的。PC-File是个平面文件数据库,可以自己配置。在20世纪80年代中期和后期,我大量用PC-File管理邮件清单和其他信息。但由于PC-File的过时文件格式和磁盘尺寸的改变,我在PC-File数据库中的信息早已消失了。PC数据库访问的一般化API还没有发明,把数据放在PC-File数据库中,它会保持在那里。20世纪90年代初,短暂使用Q&A编程之后(这是个集成很差的程序,不值一提),我转而用MicrosoftAccess满足数据库需要。Windows对PC世界进行了变革性的编程(尽管曾几何时,人们怀疑Windows或OS/2能否成为广泛接受的平台),Access是这场风暴的一部分。这个桌面数据库不仅能够完成PC-File和Q&A梦寐以求的工作,而且可以实际读取用其他文件格式存储的数据。如果愿意,也可以用Access直接窃取dBASE编程人员的数据。与此同时,还出现了Microsoft公司的第一个数据访问对象模型DAO。我至今记得当时的缺陷报告,Users有个Groups集合,而Groups有个Users集合——当然,这个特性是完全故意的。此后Microsoft在数据访问方面进步不大,但1996年,DAO第一版过时,Microsoft文献中开始大量出现UDA(通用数据访问)一词。我个人认为UDA是个管道,是进行相互连接的标准管道,能够紧固所有接头,转换数值,让数据从应用程序一端流到另一端。不同尺寸的管道之间要用接头和耦合器进行连接,使来自不同来源的项目能够相互连接。ADO提供了数据访问编码模式,可以一遍一遍地复用,不管一端的用户界面和另一端的数据源如何。2002年,出现了ADO.NET。根据我自己的经验,我相信这是今后五年我自己的应用程序中大部分数据访问代码要使用的API。从某种意义上说,ADO.NET是ADO的改进;从某种意义上说,ADO.NET又是全新的世界观。最主要的新功能是切断数据和XML兼容性。ADO可以在任何应用程序中使用任何数据源,ADO.NET改进了这个功能,不再需要与数据源保持连接。可以取得要用的数据,通过HTTP将它发送到全世界,明天再进行编辑,后天再发送回去,而更新照样能够成功。ADO.NET和一般.NETFramework必将大大改变开发人员编写与部署应用程序的方式(从桌面到Web)。.NETFramework平台消除了桌面编程与分布式编程的大部分差别,只要学习一种(尽管相当复杂)数据访问技术,就可以随处使用。.NETFramework可以在具有完全特性的IDE中编写代码,结果又可以在几乎任何Web浏览器中使用,开发人员不用编写一行HTML代码。Microsoft公司在数据访问与框架开发方面的数年经验将对采用这个新环境的用户大有帮助。另一方面,新代码出现了,并不表明旧代码就要死亡了。ADO仍然是今后几年可行的数据?梦蔄PI,有些方面仍然明显优于ADO.NET。例如,有些OLEDB提供者测试并支持ADO,但还不支持ADO.NET。如果要使用这些提供者,则只能使用ADO。不难看出,数据访问是任何真正应用程序代码的一部分,封闭的、相互不可操作的文件格式(曾记得PC-File?)使开发人员很难处理数据。当然,在ADO与ADO.NET世界中,仍然要学习许多不同技术。从简单数据检索与编辑到结构修改与多维累计,到使用XML表示同步关系型数据,这些API有许多用途。本书要广泛介绍ADO.NET与ADO,但不准备详细介绍每个细节,例如OLAP或SQLServer开发本身就可以写成一本书。但本书可以作为所有数据访问工作的第一参考书。本书的组织本书包含六个部分和一些附录。第一部分(第1章~第2章)概述数据访问问题。这几章介绍本书使用的软件,简要介绍早期的Microsoft数据访问API,然后介绍ADO与ADO.NET的总体体系结构。第二部分(第3章~第10章)介绍基于COM的“传统”ADO。这几章介绍读取与改变数据的基础以及一些高级技术,如使用层次式Recordsets、切断数据和ADO事件。第三部分(第11章~第13章)介绍.NETFramework,其中有些材料不完全针对数据访问,但这也许是许多读者第一次接触.NET。这个部分还介绍.NET应用程序中基于COM的ADO。第四部分(第14章~第19章)详细介绍ADO.NET,首先介绍检索与编辑数据的基础,然后介绍一些高级技术,如XML同步和使用ASP.NET与ADO.NET。第五部分(第20章~第23章)主要介绍ADO的提供者特定方面。尽管ADO可以使用不同来源的数据,但也可以利用各个数据源的特殊功能。本书这个部分介绍SQLServer、Oracle、Jet和另外几个不常见的提供者。第六部分(第24章~第27章)介绍客户端特定技术,包括从VisualBasic、Access、Excel与VisualBasic.NET中使用ADO与ADO.NET。最后,本书几个附录介绍书中使用的主要对象模型,以及一些重要实用程序和SQL与MDX查询语言入门知识。说明:本书中的ADO指COM对象的ADO2.7库,除非另有说明;新的.NET版本指ADO.NET。关于样本代码本书选配光盘包含书中的所有样本代码。使用样本代码时要注意几点:·大多数情况下,每章有一个样本代码。样本代码采用简单的命名规则:例如ADOChapter3样本代码包含第3章的所有代码。·ADO样本通常用VB6编写,而ADO.NET样本通常用VisualBasic.NET编写。本书第六部分的有些样本代码是对Access2002与Excel2002编写的。·大多数样本最初显示一个菜单窗体,有一组按钮,运行本章的各段代码,哪个按钮对应哪段代码是一目了然的。·所有窗体用窗体名作为窗体标题。这样,如果屏幕图形中标题为“frmHierarchy”,则很容易找到样本项目中的相应窗体。·大部分代码是演示质量的,而不是生产质量的。特别是,大多数样本代码的错误捕获很简单(只限于向用户界面显示错误)或根本没有。要在应用程序中使用这些代码,就要进行一些修改。更新本书是2001年用下列软件写成的:·SQLServer2000withServicePack1·VisualBasic6withServicePack5·Windows2000withServicePack2·OfficeXP·Oracle8iRelease3(8.1.7)·VisualStudio.NETBeta2我用VisualBasic与VisualBasic.NET提供样本代码,因为这是广泛使用的语言,适用于本书介绍的所有API和对象。这些语言也使开发人员更容易阅读,即使不是VisualBasic开发人员。当然,编写的软件难免要进行更新。细心的读者可以将找到的任何缺陷告诉Sybex公司和作者本人。如果样本代码有任何重大修改,将在Sybex网站www.sybex.com中提供(在Sybex主页Search框中输入本书ISBN号2994找到本书页面)。特别地,发布VisualStudio.NET时,我会发布.NET样本代码的更新拷贝,供读者下载。如果发现样本代码中的任何问题或者有任何意见与建议,欢迎发E-mail到MikeG1@larkfarm.com。当然,我不能保证每信必复,但我会尽力而为。关于本书选配光盘本书选配光盘包含下列内容:·本书的所有样本代码和应用程序·附录E“ADO和ADO.NET实用程序”·附录F“SQL和MDX语言入门”·开放源代码MySQL数据库·GeorgePoulouse的ADO查询工具·SmithVoice的数据库代码创建器·PEYO的ADOExplorer·LockwoodTechSoftware的Query-Blaster与Proc-Blaster·JosephAlbahari的ADO.NETQueryExpress·BlueshellDataGuy要使用本书选配光盘内容,只要将光盘插入光驱中,即可自动启动光盘的安装程序。如果关闭AutoPlay特性,则可以打开本书选配光盘根目录中的readme.htm文件,看看如何使用。致谢感谢编辑组将模糊的思想变成这本书:RichardMills、DeniseSantoroLincoln、ChristineMcGeever、LizBurke、JimGabbert与AceyBunch。感谢生产小组完成了许多艰辛的工作:MaureenForys、TonyJonick、NancyRiddiough、YarivRabinovitch、NelsonKim、NanetteDuffy、JenniferCampbell、LaurieOConnell、EricaYee与KevinLy。除了写序之外,KenGetz还帮我处理了许多编程问题。AndyBaron、MaryChipman与BrianRandell也在多年来帮我理解了数据访问的许多技术。当然,还有很多朋友给予过帮助。“SmartAccessExtra”的读者和AccessD邮件清单贡献者推动我涉及了ADO世界的边边