使用Activex数据对象

这一节将一步一步地引导你在你的ASP网页中使用ADO。首先你将学习如何配置你的服务器以使用ADO。接着，在下一节提供了一个简单的例子，演示如何使用ADO对数据库进行读写操作。最后，考虑到你会遇到一些问题，有一节内容讲述ADO的调试。

配置服务器以使用Activex数据对象

本书假定你是在Microsoft SQL Sever中使用ADO。在继续下面的内容之前，Microsoft SQL Sever必须与你的Web服务器安装在同一台机器上，或者两台机器在同一个网络中。要了解安装和配置Microsoft SQL Sever的详细内容，请参阅第三章“安装和使用SQL Sever”。

在能够使用ADO之前，你必须先建立一个数据源。数据源包含了如何与一个数据提供者进行连接的信息。在这种情况下，你将使用数据源与Microsoft SQL Sever建立连接。数据源共有三种类型：你可以建立用户数据源，系统数据源，或者文件数据源。当你要建立一个与Web服务器一起使用的数据源时，你应该建立一个文件数据源。建立文件数据源的好处是连接信息存储在一个实际的文件中。不止一个用户可以访问这个文件。而且，如果你需要把Web应用程序从一种Web服务器移植到另一种Web服务器上，你只需要移植这个文件即可。

注意

在建立一个数据源之前，应确保SQL Sever正在运行。通过MS SQL Sever程序组中的SQL服务管理器可以确定SQL服务是否在运行。

按如下步骤可以建立一个新的文件数据源：

1. 打开WINDOWS NT SEVER的控制面板（选择Start|Setting|Control Panel）。

2. 单击ODBC的图标。

3. 单击标签File DSN。

4. 单击按钮Add，出现Create New Data Source对话框。

5. 在对话框中，选择SQL Sever驱动程序并单击按钮Next，出现Create a New Data Source对话框。

6. 输入你所建的数据源的名字。例如，输入mydata.dsn。单击Next，再单击Finish，则wizard程序Create a New Data Source to SQL Sever会被启动（见图22.1）。

7. 在文本框Description中，输入一个描述，如My Data Source。在文本框Sever中，输入安装了SQL Sever的服务器的名字。（如果SQL Sever与Web服务器安装在同一台机器上，你可以输入Local）单击Next。

8. 一系列对话框出现，要求你定制数据源的各种属性。你要指定一个缺省数据库。选择你的表所在的数据库作为缺省数据库。让其它的选项保持其缺省值，单击Next，关闭所有的对话框。

9. 最后，给你一个测试新数据源的机会。如果测试成功了，单击OK，添加这个新数据源。

图22.1 用SQL Server Wizard创建一个新数据源

你已经建立了一个名为mydata.dsn的新数据源。你可以使用这个数据源连接到Microsoft SQL Sever.（下一节将介绍如何进行连接）

使用Activex数据对象对数据库进行读写

这一节给出了一个如何使用ADO对Microsoft SQL Sever数据库进行读写操作的例子。举这个例子有两个目的：它演示了从ASP网页中访问Microsoft SQL Sever的基本方法，而且你可以用这个例子检测服务器的配置是否正确。

表22.1所示的网页把文本“Hello World!”插入一个表中，然后，从表中取出这个文本并显示在浏览器中。

表22.1 Hello World!

<HTML><HEAD><TITLE> ADO Example </TITLE></HEAD><BODY><%Set MyConn=Server.CreateObject("ADODB.Connection")MyConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"MyConn.Execute "INSERT MyTable (MyColumn) VALUES ('Hello World!')"Set RS=MyConn.Execute("SELECT * FROM MyTable")Response.Write(RS("MyColumn"))MyConn.Close%></BODY></HTML>

在使用这个例子之前，你需要建立一个名为Mytable的表。你可以使用ISQL/w来创建它。启动这个程序，选择你的缺省数据库，然后执行如下的SQL 语句：

CREATE TABLE mytable (mycolumn VARCHAR(255))

注意

要了解建立表的更多信息，请参见第10章“SQL基础”。

这个网页的第一行创建了连接对象的一个实例。接下来调用连接对象的open方法，打开了一个对数据库的连接。在open方法中用到了你在上一节所建立的数据源，以建立对数据库的连接。（用你的计算机中的实际路径代替这个脚本中文件数据源的路径。）

一旦打开了一个连接，你就可以用这个连接执行SQL语句。在这个例子中，用Execute方法执行了两个SQL语句。首先，用SQL INSERT语句把字符串“Hello World!”输入到了数据库中。然后用SQL SELECT语句从表中取出了这个字符串。

如果你的系统配置正确，字符串“Hello World!”将会显示在浏览器窗口中。该字符串先被插入数据库，又被取出并显示。如果有什么不正常，请参看下一节。

调试Activex数据对象

如果你用ADO访问Microsoft SQL Sever时出现问题，这一节将对你有所帮助。许多原因会导致上一节中所示的ASP网页执行失败。下面列出了你通常会遇到的一些问题的症状以及可能的原因：

- 症状
：出现错误信息 Unable to create file buffer.

原因

：文件数据源不正确。如果文件数据源的路径或名字有误，或者该数据源不存在，你就会收到这个错误信息。你应确保网页中open方法所使用的文件数据源的路径与你计算机中的实际路径相同。

- 症状
：出现错误信息 Invalid object name

‘mytablw’

原因1

：数据库中不存在表’mytable’。按照上一节中所讲的方法用ISQL/w创建这个表。

原因2

：表mytable不在缺省数据库中。你需要指定一个缺省数据库。选择Start|Settings|Control Panel。单击ODBC图标，然后单击File DSN标签。选择你的文件数据源的名字，单击Configure，再单击Options。在对话框中指定你的确省数据库的名字。

- 症状
：出现错误信息 The sever appears to be not available

原因

：SQL Sever没有运行。从Microsoft SQL Sever程序组中选择SQL Sevice Manager。选择MSSQLSEVER并单击绿灯。

- 症状
：出现错误信息 Login failed。

原因

：你没有使用WINDOWS NT确认模式。建立数据源时输入了错误的帐号和口令。选择Start|Settings|Control Panel。单击ODBC图标，然后单击File DSN标签。选择你的文件数据源的名字并单击Configure。你可以选择Use Trusted Connection，或输入合法的帐号和口令。

- 症状
：出现错误信息 INSERT permission denied on object mytable 或

SELECT permission denied on objict mytable。

原因

：建立数据源时指定的帐号没有访问表mytable的足够的权限。你需要改变文件数 据源的注册帐号，或者给该用户或用户组提供更多的权限。

要提供对一个表的更多权限，从Microsoft SQL Sever程序组中启动SQL事务管理器，找到表mytable并用右键点击它。选择Permissions。现在你可以为不同的用户或用户组设置对这个表的操作权限。