第5章 连接数据库
在了解了如何设计数据库,并完成了数据库的设计和创建之后,我们就可以真正开始进入Web应用程序设计的殿堂了。不过在真正编写脚本代码之前,还有许多工作要做。目前市场上的数据库产品多种多样,文件格式也是各不相同,要在简单的 ASP代码中识别这些文件格式几乎是不可能的事情,更不用提对数据进行读写了。
这就是要创建数据库连接的目的。利用数据库连接,可以将一个现有的数据库同当前的Web环境结合起来,通过简单统一的编程接口和脚本代码,以实现对数据库的控制,这种特性的优点在于开发人员不用考虑数据库本身的格式,从而可以将全部精力都放到对数据库数据进行处理这个核心上来。
要利用ASP访问数据库中的数据,首先应该构建系统环境同数据库的连接。在这一章里,我们着重介绍一些同数据库连接方面有关的知识。
5.1 数据库技术概述
在这一节中,我们将介绍一些数据库技术的基础知识,并描述一个数据库在 Web应用程序中是如何被使用的。
5.1.1 常见的数据库访问方法
现在,市场上的数据库产品和应用多种多样。例如,有些人喜欢用文本文件管理数据,那么文本文件就是一种数据库;而另一些人喜欢使用电子表格来管理数据,则电子表格又是一种数据库;以Access 2000的表来储存数据,Access 2000生成的。mdb文件就是一个数据库;而对于一些大型的商务来说,SQL Server或Oracle,则可能是构建数据库的首选产品。
各种数据库本身的性能差别和文件格式差别成为制约数据库应用的瓶颈。几乎没有人能够编写一个直接读取数据库文件的应用程序,因为要完全熟悉这些数据库的格式和功用几乎是不可能的事情。对于笔者来说,以前在DOS下开发数据库程序的情形现在还历历如新,那时笔者费尽心力,终于掌握了当时最流行的 .dbf数据库文件格式,成功实现了对 .dbf的文件的直接读写,然而没过多久,新的Access数据库系统登上了舞台,笔者在将原有数据库转向Access之后,发现以往好不容易才掌握的。dbf数据库文件格式一下子变得毫无用处。
为了解决这种问题,数据库厂商们提供了多种方案,以增强软件开发人员对数据库控制的能力。目前最为流行的方案是:使用数据库连接来构建系统同数据库的关联,并根据数据库连接所提供的应用程序编程接口,实现对数据库的读取。
1. ODBC ODBC(Open Database Connectivity,开放数据库互联)是Microsoft开放的一套读取数据库的解决方案,它的目的是将所有对数据库的底层操作全部隐藏在 ODBC的驱动程序内核里。
对于程序员来说,只要构建了一个指向数据库的连接,就可以采用统一的应用程序编程接口(Application Program Interface,API)实现对数据库的读写,而不用考虑数据库到底来自什么厂家,使用什么格式。ODBC的工作原理如图5-1所示。
142 部分Dreamweaver UltraDev动态网页设计下载
dBase dBase
驱动程序 数据库
Access Access
驱动程序 数据库
应用程序 ODBC API
SQL Server SQL Server
驱动程序 数据库
Oracle Oracle
驱动程序 数据库
图5-1 ODBC工作原理
目前,ODBC驱动已经提供了对大多数类型常见数据库的支持,包括 dBase、Access、SQL Server和Oracle等,也包含对其他一些类数据库文件,如文本、 Excel电子表格等的支持。对于那些不常见的数据库,只要安装数据库厂商提供的 ODBC程序,也就能够在程序中直接操作。
ODBC技术目前已经成为读写数据库的主流技术。
2. DAO虽然使用ODBC可以实现对几乎所有常见数据库的访问,但是其编程接口过于复杂,而且没有专门针对某种格式数据库进行优化。对于某些程序员来说,他们的工作可能就是仅仅读写一种格式的数据库,要掌握全部的ODBC编程接口显然是不合理的。
很多厂商通过开发数据库存取对象的方式来解决这种问题,其中比较突出的是 Microsoft的DAO.DAO(Data Access Objects,数据访问对象)是Microsoft开发的专门针对Access的。mdb格式数据库的一套数据库访问对象,如果您要操作的数据库是 Access的。mdb格式的数据库,就可以直接利用DAO所提供的编程接口来对数据库进行读写。DAO实际上仍然是从ODBC中演变而来的,但是它放弃了ODBC中非。mdb的支持部分,并针对。mdb格式进行了优化,在一些高级编程语言,如Visual C++和Visual Basic中,可以非常方便地实现对。mdb格式数据库的支持。
3. RDO如果所使用的数据库不是Access的。mdb格式,则DAO就变得无用武之地。对于大型的商用数据库系统来说,SQL Server一直是Microsoft的主推产品。为了强化对SQL Server数据库的访问能力,Microsoft又推出了RDO(Remote Data Access Objects,远程数据库访问对象)。使用RDO的方式与使用DAO的方法基本上相同,对现有的使用 DAO应用程序只需稍做改动,即可将其转换为使用RDO的应用程序。
RDO的设计目的主要是用于智能的数据库服务器,因此,它不仅能够用于 SQL Server,也能够用于 Oracle,在RDO中使用了非常复杂的查询引擎,效率非常高,已经接近直接利用ODBC API的访问效率。不过正是因为RDO专门针对高级数据库系统而开发,因此它不能应用于其他较为简单的数据库上。
实际上,由于RDO专门针对标准的关系型数据库而设计,因此在其中并没有自己内置的查
第5章认连接数据库部分 143下载
询处理程序。RDO必须依靠数据源本身来处理所有的查询,以创建查询结果,而数据对象本身则是由ODBC驱动程序所返回的结果集而建立的。这就是RDO高效的原因。
目前,在Visual Basic的企业版中,已经内置了RDO的功能。
4. ADO随着Microsoft向Internet领域的进军,ActiveX成为Microsoft的战略基石。几乎所有的微软网络产品和数据库产品都最终打上了ActiveX标记,ADO则是其中的代表。
ADO(ActiveX Data Objects,ActiveX数据对象)可以看成是 DAO/RDO的后继产品。但是在功能上与RDO更相似。ADO摘取了DAO和RDO的精华部分,简化了DAO和RDO所使用的对象模型,因此它同 DAO和RDO相比包含的对象、属性、方法和事件更少,但是更加灵活,也更具有Internet的针对性。
ADO是为Microsoft最新和最强大的数据访问方法 OLE DB而设计的,是一个专门针对Internet而使用的应用程序编程接口。OLE DB是Microsoft开发的一种底层接口,它采用通用的数据访问规范,能够对各种类型数据进行处理,而不用考虑它们的格式和存储方法。 OLE DB所支持的数据源是多种多样的,不仅包括关系型数据库,甚至包括非关系数据库、电子邮件和文件系统、文本和图形以及自定义的对象等。
ODBC的应用程序编程接口( API)是无法在 ASP中使用的,但是 ADO却是一种可以在ASP中使用的标准对象,因此,对于 Web应用程序的开发者来说,通过在 ASP页面中使用ADO对象来实现数据库的访问,是目前的最佳方法,如图5-2所示。
请求页面使用ADO对象浏览器 Web服务IIS的。asp文件下载页面
ODBC驱动程序
数据库
图5-2 在ASP中访问数据库
5.1.2 包含数据库服务器的B/S架构
在第2章中我们介绍了什么是 B/S架构。在构建B/S架构时,很多人为了节约成本,只使用一台服务器作为Internet服务器,将数据库和IIS同时运行在一台服务器上,这是不可取的。
数据库系统通常占用的系统资源是比较大的,如果对数据库的存取操作都放在 Web服务器上进行,这必将极大影响Web服务器本身的运行效率,甚至导致系统资源的紧张。
另外,相对于应用程序本身来说,存储在数据库中的数据才是最重要的。如果将数据库放在Web服务器中,如果由于种种原因导致 Web服务器崩溃甚至毁坏,保存在 Web服务器中的数据也就难免会同时丢失,造成难以弥补的损失。
所以大多数情况下,如果成本允许,应该单独用一台服务器来提供数据库服务,对数据库
144 部分Dreamweaver UltraDev动态网页设计下载
的读写发生在Web服务器和数据库服务器之间,而客户机仅仅同 Web服务器相连,下载Web服务器从数据库服务器中获取的结果。这种包含数据库服务器的 B/S架构如图5-3所示。
Web服务器 数据库服务器
处理数据, SQL请求并生成页面
SQL结果 处理SQL下载页面 请求
发出请求
浏览器
客户机
图5-3 包含数据库服务器的B/S架构
如果成本实在有限,只能将Web服务和数据库服务放在一台服务器上,则应该确保数据库服务和Web服务不运行在一个进程中,这样可以提高系统的稳定性。
5.2 创建ODBC连接
要在ASP中使用ADO对象来操作数据库,首先要创建一个指向该数据库的 ODBC连接。在Windows系统中,ODBC的连接主要通过ODBC数据源管理器来完成。
5.2.1 启动ODBC数据源管理器
对于Windows 95/98或Windows NT的用户来说,打开“控制面板”,就可以看到一个名为“ODBC”、“32位ODBC”或“ODBC数据源”的图标,双击该图标,即可启动 ODBC数据源管理器。
对于Windows 2000的用户来说,可以打开“开始”菜单,选择“程序”,选择“管理工具”,然后选择“数据源(ODBC)”,即可启动ODBC数据源管理器。
一个典型的 ODBC数据源管理器如图5-4所示。
在ODBC的数据源管理器中,包含了多个选项卡,允许您进行各种有关ODBC的操作。默认状态下, ODBC已经内置了多种数据库的驱动,您可以单击“驱动程序”选项卡,查看当前要连图5-4 ODBC数据源管理器
第5章认连接数据库部分 145下载
接的数据库类型是否位于其中,如图5-5所示。
对于本书来说,因为使用的是Access的。mdb数据库文件,ODBC中已经内置了对其的支持,在图5-5中驱动程序列表的第一行中您就可以看到它。
图5-5 查看ODBC中的数据库驱动程序
5.2.2 认识DSN
在具体介绍如何创建ODBC连接之前,我们还需要了解一些有关DSN的知识。
1. DSN的含义DSN(Data Source Name,数据源名称),表示用于将应用程序和某个数据库相连接的信息集合。ODBC数据源管理器使用该信息来创建指向数据库的连接。通常 DSN可以保存在文件或注册表中。简言之,所谓构建 ODBC连接,实际上就是创建同数据源的连接,也就是创建DNS.一旦创建了一个指向数据库的 ODBC连接,同该数据库连接的有关信息就被保存在 DNS中,而在程序中如果要操作数据库,也必须通过DSN来进行。
一般来说,一个DSN中,至少应该包含如下一些内容:关于数据库驱动程序的信息。
数据库的存放位置。对于文件型数据库(如 Access)来说,数据库的存放位置是数据库文件的路径;而对于非文件型数据库(如SQL Server)来说,数据库存放的位置指的是服务器的名称。
[1] [2] [3] [4] [5] 下一页