欢迎阅读本书。1998年(距今已有相当长的一段时间),Microsoft Press出版了我所撰写的关于应用程序设计和开发的系列丛书Hitchhiker’s Guide中的一本:Hitchhiker’s Guide to Visual Basic and SQL Server(第6版)。当时,我仍在Microsoft’s Internal Technical Education小组工作。当时,Visual Basic 6.0刚刚开始使用,而SQL Server 7.0即将投入市场。在第6版Hitchhiker’s Guide的引言中,我已经提到了许多重要的变化,包括针对Visual Basic、ADO、SQL Server、连接工具以及技术的显著修改。我当时认为除非彻底改变Visual Basic的编译方式并引入全新的数据访问接口(基于COM的ADO),才能产生根本的技术革新。事实证明,这种想法是错误的。 今天,考虑到SQL Server和Visual Basic的当前状态,如果仅仅说:在过去7年中发生了许多变化,是很不够的。在我2000年从Microsoft退休之前,Microsoft已经从基于COM的Visual Basic(6.0)转为开发基于全新的.NET架构(这也是Vista操作系统的基础)的Visual Basic .NET。当时,这些变化促使我需要重新编写Hitchhiker’s Guide。但是,直到.NET开发完成,也没能完成这一重要任务,相反,我为APress撰写了两本书,分别是ADO and ADO.NET Examples and Best Practices for Visual Basic Programmers(主要针对从Visual Basic 6.0转型到Visual Basic .NET的开发人员)以及ADO.NET Examples and Best Practices for C# Programmers(与Peter Blackburn合著,是前一本书的C#版本)。这两本以ADO为主要内容的书都没有真正强调前一版Hitchhiker’s Guide中所提到的体系结构的许多基本概念和基本技术。 后来,Peter Blackburn加入了写书的工作,他对这两本Apress书投入市场起了很大的作用。Peter说服我针对SQL Server Reporting Services(这也是他最喜欢的专题)撰写一本更专业的图书。由于下一版的Visual Studio(Whidbey)当时尚未启动,因此,这个想法是一个很好的主意。我们的目标是在三个月内写出一本200页的书。事实上,这本书花费了一年多的时间。不过,780页的Hitchhiker’s Guide to SQL Server 2000 Reporting Services (Addison-Wesley)一书已经出版,该书也是SQL Server Reporting Services方面的权威读本之一。Peter为本书做了大量的研究与初期工作,并提供了重要的技术指导(非常感谢他给予技术方面支持)与逻辑支持。 1. 本书要点 Hitchhiker’s Guide系列丛书有哪些特别之处?也许了解一点过往情况有助于弄清这个问题。在20世纪80年代,我为Microsoft University(MSU)工作,主要工作内容是编撰培训材料和进行培训授课。不过,当时的技术主题(例如,OS/2和Quick Basic)现在已经过时了。当Microsoft与Sybase合作开发针对OS/2的SQL Server时,MSU和我被雇来为开发人员建立培训课程,内容包括:关系数据库设计、TSQL编程、DBLibrary编程以及其他相关主题。我负责管理并指导培训者。该课程持续了差不多5年时间—— 每周授课3~5天,每月授课三周。在这一过程中,所有人都对SQL Server有了更全面的了解和实践。 当MSU结束之后,我编写了首本Hitchhiker’s Guide: Hitchhiker’s Guide to VBSQL。这本书的标题与Douglas Adam的书毫无关系—— 他的书带有向导性质(与Europe on $5 a Day类似),主要针对利用Visual Basic开发SQL Server前端应用的人员。首本Hitchhiker’s Guide也帮助我获得了在Visual Basic文档小组担任创作者的工作机会。该书的第一版并没有对Visual Basic(1.0)、DBLibrary、SQL Server以及它们之间的内部关联机制作详细介绍。很多提示和技术来自我所编写的培训教材以及与SQL Server开发人员、MSU学生的交流。虽然本书包含相当多的技术内容,但我试图通过某些使用得并不恰当的例子将相对枯燥的主题变得幽默易懂。第1版Hitchhiker’s Guide交由Microsoft Press出版,但是Microsoft Press更希望出版与Power Builder有关的书,而不是出版与DBMS(例如SQL Server)有关的书。这种想法实在很奇怪。因此,我自费出版了前三版Hitchhiker’s Guide。这些书在美国的销量非常不错,并且行销海外。我曾将这些书的版权卖给一位香港的朋友,他使这些书在中国也有了很好的销量。遗憾的是,我从版权中并没有获得任何回报。 每个版本的Hitchhiker’s Guide都在上一版的基础上有所发展。随着Visual Basic及SQL Server的发展与成熟,我对它们的理解也在不断扩展。每本Hitchhiker’s Guide都关注于当前最新的Visual Basic与SQL Server的接口与功能,同时,每本Hitchhiker’s Guide也对ODBC、DAO、ODBC Direct及ADO接口作出了明确定义,并说明了利用Visual Basic工具访问这些数据接口的方法。我很喜欢思考这些书是否真正将Microsoft及数据访问小组的注意力转移到使用者所面临的实际问题上。这些使用者包括我的学生、顾客以及经常保持联系的读者。我会把针对公共问题的新方法放在下一版丛书中。这么多年以来,我用很多时间与开发人员团体进行交流,这些交流方式包括会议、新闻组以及培训课程。如果某位读者遇见我并针对数据访问提出了更好的解决方法,那么这个方法很可能会出现在Hitchhiker’s Guide丛书中。 最终,Hitchhiker’s Guide丛书前三版的畅销使得Microsoft Press提出出版第4版的要求。当和出版社达成共识(由我负责所有版本的控制)之后,我同意了Microsoft Press的出版要求。在接下来的几年中,Microsoft Press出版了更新后的第5版和第6版。这些书都至少被翻译成8种语言,包括日语、西班牙语、法语、德语、匈牙利语、意大利语、韩语以及中文。 2.本书范围 Hitchhiker’s Guide to Visual Studio and SQL Server(第7版)的覆盖范围很广,包括Visual Studio、SQL Server、Visual Studio与SQL Server的交互方式,以及开发人员利用这些工具和引擎开发专业应用程序的方法。如果您从本章的介绍中无法获得上述信息,那么在稍后的章节将对它们作专门介绍。在Microsoft University工作期间,我与开发人员及其他人员保持了将近20年的联系,并积累了文档中无法找到的许多信息。当MSU结束之后,我转到Visual Basic文档小组工作。在那里,我有机会接触到Visual Basic文档,但却无法接触到SQL Server文档。这是由文档的专业化所造成的。几乎所有的数据库后端都面临这样的问题。由于我所撰写的所有图书都涵盖了编程语言(Visual Basic)和不同版本的SQL Server,从而弥补了二者之间的鸿沟。 与前几版相比,本书以一种更宽广的视角来看待数据访问的开发问题。这是由于Visual Basic .NET与前面几版所讨论的Visual Basic并不相同。因此,本书的标题是Hitchhiker’s Guide to Visual Studio and SQL Server。目前,RAD开发不仅与Visual Studio有关,也与所采用的开发语言有关。Visual Studio可以为选定的开发语言自动生成大量的代码,并提供很多工具、向导、控件、类以及接口。这些内容对所有语言都是通用的。因此,本书着重讨论了如何利用Visual Studio工具集创建专业化的应用程序,包括它的适用场合及不适用场合。 本书还介绍了全新版本的SQL Server。开发人员能够通过Visual Basic .NET或者C#编写Server端的可执行程序。这意味着可以利用Visual Studio和开发人员所熟悉的CLR语言编写存储过程、函数、触发器、用户自定义类型以及聚集函数。本书中的很多篇幅讨论了设计和实现上述内容的过程与时机。这对前面版本的Hitchhiker’s Guide进行了扩充。整本书主要关注的是如何与SQL Server进行连接和运行查询,而对Oracle、DB2或者JET的相关内容则基本没有涉及。当然,本书中所描述的基本原则和实例完全可以应用到其他的DBMS平台上。很多读过前几版本的Hitchhiker’s Guide的开发人员已经发现了这一点。 无论如何,我不希望开发人员购买本书的目的仅仅是因为封面上的Visual Basic或者C#。虽然本书的大部分实例用Visual Basic .NET编写,但是绝大部分内容既适用于Visual Basic .NET,也适用于C#。我曾经打算同时提供Visual Basic .NET和C#的实例,但由于时间和精力有限,放弃了这一想法。大多数C#开发人员可以很容易地将Visual Basic .NET代码转换为C#代码。但是,对于部分Visual Basic .NET开发人员(尤其是从Visual Basic 6.0转型到Visual Basic .NET的开发人员)来说,同样的转换却并不简单。由于本书的内容适用于SQL Server 2000及以上版本(包括SQL Server 2005及其服务包),因此书名中没有提到SQL Server的版本信息。既然Microsoft提出每年都会更新产品(每次诉讼后也会更新),因此我将尽力保证书名(以及内容)与产品更新一致。 3.保持更新 在我所撰写的所有图书中,我都试图提供当前最新的信息。但是,这是一项非常困难的工作。Microsoft在不断地更新、修复、调整已经发行的软件。Microsoft看起来似乎没有针对用户编写有关应用程序方式方面的长期计划。现在所适用的软件很有可能在未来被淘汰。这是由于Microsoft一直强迫开发商(以及用户)购买其最新的软件产品,以此来获得最大利润,因此,这样一种循环过程(发布、修复、报废)将永无止境。似乎永远也没有时间将开发人员需要的所有功能都包含在一个产品中,同样,一旦需求发生变化,似乎也没有足够的时间进行修改(这很遗憾)。 身为作者,我同样面临困境。目前,我的硬盘里已经有了超过700页的初稿。但是在本书出版以前,这些内容将无人可见。技术内容的有效期是有限的,我们(出版商和我)需要探询新的方法使您更快地读到最新的内容。我所面临的另一个问题是本书的范围。坦白地说,我希望能够将其他相关内容(比如ASP开发问题、安全性问题、部署问题、SQL Trace和配置问题等)包含在本书中。同样,我也希望能够探讨与下一版Visual Studio(Orcas)相关的数据访问新技术(如DLINQ)。对于单独写作的人来说,这是不可能实现的目标。 本书读者对象 人们经常问我这样的问题:本书在技能和兴趣方面是否符合开发人员的需求,或是否符合多个开发小组的需求。虽然我也希望能够回答:“这本书适用于每个人”,但是正如预期的那样,这种情况不会发生。本书主要适用于以下读者群。 ● 软件开发人员、构架师以及经理。这些人负责指定、设计、编码、汇编、测试、部署、支持、更新业务应用程序,而业务应用程序需要管理数据,尤其是SQL Server数据。 ● 具有一定Visual Basic 6.0、Visual Basic .NET或者C#经验的开发人员,以及精通其他编程语言,并希望理解这些语言且利用其创建数据访问应用程序的开发人员。 ● 希望利用最新版本以及更新版本的Visual Studio和SQL Server功能集的用户。通过阅读这本书,他们可以了解可使用和不可使用的功能,并知道其中的原因。 ● 对于咨询师来说,如果他们希望了解如何通过创建快速应用程序来更好地支持SQL Server客户的要求,那么本书也适合他们阅读。 ● 在第一次使用SQL Server且希望了解如何最好地利用SQL Server的用户以及具备SQL Server使用经验的用户。 ● 如果人们希望了解如何以及何时(这一点更加重要)利用SQL Server 2005 CLR的可执行程序的能力,或者是通过新的Report Viewer控件访问SQL Server Reporting Service,那么这些人也适合阅读本书。 ● 学生、教师、培训者以及课程设计人员。如果他们希望获得或者传授有用的业务软件开发技能,那么本书也适合他们阅读。 ● 通过阅读本书,每个人都能获得另一种利用Visual Studio和SQL Server开发数据访问应用程序的观点。 ● 本书也是为我自己所写。通过写书这种方式,我能够将所获得的经验传递给您。这些经验来自读者、课程参与者以及曾经询问过我的人。