使用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服务是否在运行。
按如下步骤可以建立一个新的文件数据源:
图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网页执行失败。下面列出了你通常会遇到的一些问题的症状以及可能的原因:
原因:文件数据源不正确。如果文件数据源的路径或名字有误,或者该数据源不存在,你就会收到这个错误信息。你应确保网页中open方法所使用的文件数据源的路径与你计算机中的实际路径相同。
原因1
:数据库中不存在表’mytable’。按照上一节中所讲的方法用ISQL/w创建这个表。原因2:表mytable不在缺省数据库中。你需要指定一个缺省数据库。选择Start|Settings|Control Panel。单击ODBC图标,然后单击File DSN标签。选择你的文件数据源的名字,单击Configure,再单击Options。在对话框中指定你的确省数据库的名字。
原因:SQL Sever没有运行。从Microsoft SQL Sever程序组中选择SQL Sevice Manager。选择MSSQLSEVER并单击绿灯。
原因:你没有使用WINDOWS NT确认模式。建立数据源时输入了错误的帐号和口令。选择Start|Settings|Control Panel。单击ODBC图标,然后单击File DSN标签。选择你的文件数据源的名字并单击Configure。你可以选择Use Trusted Connection,或输入合法的帐号和口令。
SELECT permission denied on objict mytable。
原因:建立数据源时指定的帐号没有访问表mytable的足够的权限。你需要改变文件数 据源的注册帐号,或者给该用户或用户组提供更多的权限。
要提供对一个表的更多权限,从Microsoft SQL Sever程序组中启动SQL事务管理器,找到表mytable并用右键点击它。选择Permissions。现在你可以为不同的用户或用户组设置对这个表的操作权限。