1.3 ODBC与ADO对象
1.3.1 ASP访问数据库的几种方式在我们介绍了数据库操作的基础知识后,我们接下来的任务是告诉大家如何用ASP访问数据库,因为一个系统不可能没有数据呀,所以我们就必须让ASP采用一个高效的方法通过Internet或Intranet来访问、操作数据库。我们知道在传统的HTML页面中,访问数据库一般是通过公用网关接口(CGI)来实现,这种方式不仅开发困难,而且在出现大量并发请求时会显著地降低服务器的运行效率,而采用ASP实现数据库访问可以说能较好地解决这个问题。
在ASP脚本中可以通过三种方式访问数据库:
● IDC(Internet Database Connector)方式
● ADO(ActiveX Data Objects)方式
● RDS(Remote Data Service)方式
从概念上来讲,这三种访问方式对数据库的访问是由Internet Information Server来完成的。Web浏览器用HTTP协议向Internet信息服务器(IIS)递交请求。Internet信息服务器执行访问数据库的操作,并以一个HTML格式的文档作为回答。
1.Internet数据库接口(IDC)
IDC是一个传统的数据库查询工具,用来定义和执行数据库查询的SQL命令,并向浏览器返回一个指定数据格式的页面。使用IDC访问数据库最大的特点是简单,几乎不需要编程就能实现对数据库的访问。
2.ActiveX数据对象(ADO)
与IDC不同,用ADO访问数据库更类似于编写数据库应用程序,ADO把绝大部分的数据库操作封装在七个对象中,在ASP页面中编程调用这些对象执行相应的数据库操作。ADO是ASP技术的核心之一,它集中体现了ASP技术丰富而灵活的数据库访问功能。ADO建立了基于Web方式访问数据库的脚本编写模型,它不仅支持任何大型数据库的核心功能,而且支持许多数据库所专有的特性。ADO使用本机数据源,通过ODBC访问数据库。这些数据库可以是关系型数据库、文本型数据库、层次型数据库或者任何支持ODBC的数据库。ADO的主要优点是易用、高速、占用内存和磁盘空间少,所以非常适合于作为服务器端的数据库访问技术。相对于访问数据库的CGI程序而言,它是多线程的,在出现大量并发请求时,也同样可以保持服务器的运行效率,并且通过连接池(Connection Pool)技术以及对数据库连接资源的完全控制,提供与远程数据库的高效连接与访问,同时它还支持事务处理(Transaction),以开发高效率、高可靠性的数据库应用程序。
正是因为使用ADO需要编写脚本程序,所以ADO能够实现更复杂、更灵活的数据库访问逻辑。目前,ADO包括Command、Connection、Recordset等七个对象和一个动态的Properties集合,绝大部分的数据库访问任务都可以通过它们的组合来完成。
3.远程数据服务(RDS)
RDS是IIS 1.0中新提出的概念,它是由ASP中原来的Advanced Data Connector(ADC)发展而来的。在IIS 1.0中,RDS与ADO集成到一起,使用同样的编程模型,提供访问远程数据库的功能。
ADO虽然能够提供非常强大的数据库访问功能,但是它不支持数据远程操作(DataRemoting)。换句话说,ADO只能执行查询并返回数据库查询的结果,这种结果是静态的,服务器上的数据库与客户端看到的数据没有“活的连接关系”。假如,客户端需要修改数据库中的数据,就必须构造修改数据的SQL语句,执行相应的查询动作。而RDS就比ADO更进一步,它支持数据远程操作。它不仅能执行查询并返回数据库查询结果,而且这种结果是“动态的”, 服务器上的数据库与客户端看到的数据保持“活的连接关系”。即把服务器端的数据搬到客户端,在客户端修改数据后,调用一个数据库更新命令,就可以将客户端对数据的修改写回数据库,就象使用本地数据库一样。
由于RDS与ADO集成,RDS的底层是调用ADO来完成的,所以也可以将RDS理解为ADO的RDS,即ActiveX数据对象的远程数据服务。RDS在ADO的基础上通过绑定的数据显示和操作控件,提供给客户端更强的数据表现力和远程数据操纵功能。可以说RDS是目前基于Web的最好的远程数据库访问方式。
以上就是ASP访问数据库的三种方式,它们三者各有各的特色。IDC十分简单,使用.idc文件和.htx文件分别完成数据库的访问与输出任务,但是使用起来不灵活。ADO是ASP中推荐使用的方式,它功能强大,使用方便,是ASP的核心技术之一,但是它在提供用户远程操作数据库的功能时,比较复杂,实现起来有一定的难度。而RDS是基于ADO的,并提供远程操作数据库的强大工具。所以在需要提供高性能、高可靠性的远程数据操作功能时,RDS是更为理想的选择。
而在以上的三种方式中,微软推荐的与现在常采用的都是通过ADO的方式访问数据库,因此接下来,我们就来讲述一下有关ADO的方案。
1.3.2 创建和配置ODBC数据源ADO可以与ASP结合,以建立提供数据库信息的主页内容,在主页画面执行SQL命令,让用户在浏览器画面中输入,更新和删除站点服务器的数据库信息;ADO使用RecordSets对象,作为数据的主要接口;ADO可使用Vbscript,JavaScript语言来控制数据库的访问,与查询结果的输出显示画面;ADO可连接多种的数据库,包括SQL Server、Oracle、Informix等支持ODBC的数据库。因此,在使用ADO访问数据库之前我们还有一项重要的工作要做,那就是创建和配置ODBC数据源。
1. ODBC的定义
首先,还是也让我们来解释一下有关ODBC的概念,这将有利于下面内容的理解。ODBC(Open Database Connectivity开放式数据库互联)是微软推出的一种工业标准,一种开放的独立于厂商的API应用程序接口,可以跨平台访问各种个人计算机、小型机以及主机系统。ODBC作为一个工业标准,绝大多数数据库厂商、大多数应用软件和工具软件厂商都为自己的产品提供了ODBC接口或提供了ODBC支持,这其中就包括常用的SQL SERVER、ORACAL、INFORMIX等,当然也包括了Access。
数据库驱动程序使用Data Source Name (DSN) 定位和标识特定的 ODBC 兼容数据库,将信息从 Web 应用程序传递给数据库。典型情况下,DSN 包含数据库配置、用户安全性和定位信息,且可以获取 Windows NT 注册表项中或文本文件的表格。通过 ODBC,我们可以选择希望创建的 DSN 的类型:用户、系统或文件。
为了更好地让大家理解上一段话,我们接下来来解释一下其中的几个名词:
● DSN:根据MICROSOFT的官方文档,DSN的意思是“应用程序用以请求一个连到ODBC数据源的连接(CONNECTION)的名字”,换句话说,它是一个代表ODBC连接的符号。它隐藏了诸如数据库文件名、所在目录、数据库驱动程序、用户ID、密码等细节。因此,当建立一个连接时,你不用去考虑数据库文件名、它在哪儿等等,只要给出它在ODBC中的DSN即可。
● FILE DSN: 当我们讨论这个问题时,先看看其他的DSN类型。
● SYSTEM DSN:这种DSN可以被任何登录到系统中的用户使用。
● USER DSN:这是为特定用户建立的DSN。只有建立这个DSN的用户才能看到并使用它。在上面的两种情况中,DSN的细节都储存在系统的注册表中。
2.配置ODBC数据源
接下来我们就讲述一下系统DSN的配置过程。
首先在 Windows 的“开始”菜单打开“控制面板”,双击“ODBC”图1.标,然后选择“文件 DSN”属性页,单击“添加”,如图所示。接下来的操作将视我们要配置的数据库系统的不同而有不同的操作,由于我们介绍的主要是基于Access数据库和SQL Server数据库的,所以接下来的两个部分我们讲分别讲述Access数据库系统DSN和SQL Server数据库系统DSN的配置方法。
(1)Access数据库系统DSN的配置方法
Step1:单击添加后弹出如图所示的对话框,选择数据源为 Driver do Microsoft Access (*.mdb)单击完成。
Step2:这时弹出一个 “ODBC Microsoft Access安装”的对话框,在对话框的数据源名文本输入框中输入配置的DSN文件名,如果test_dsn然后单击 “选择”按钮。如图所示。
Step3:这时将弹出一个如图1.20所示的对话框,在对话框的数据库名中输入 “c:\test.mdb” (该数据库的建立方法请参看前边的章节),或是从右边的目录浏览器中选择“驱动器C”-> “test.mdb” 。选择数据库完成后,单击确定按钮将回到如图的界面。
Step4:单击“确定”,这时出现的界面如图所示,请注意,这时在系统数据源列表框中出现了“test_dsn” 项。Access数据库系统DSN配置完成。