如何在 Active Server Page 中访问 SQL Server
适用于概要
本文介绍了如何使用“ActiveX 数据对象”(ADO) 在 ASP 脚本中建立到 SQL Server 的连接,同时利用 ODBC 3.0 的连接池功能。
更多信息
连接池
启用 ODBC 连接池。有关连接池的其他信息以及有关如何启用连接池功能的说明,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
164221 如何在 ODBC 应用程序中启用连接池
ODBC DSN
使用“ODBC 管理器”,在 Microsoft Internet Information Server (IIS) 安装在的计算机上创建一个“系统”数据源名称 (DSN)。一次指定连接属性,然后在每个页面上重复使用此属性。例如,在 Global.asa 文件的 Session_OnStart 事件中,将连接属性定义为:Session("ConnectionString") = "dsn=SQLSysDSN;uid=<username>;" & _确保下列所有条件都满足:
"pwd=<strong password>;DATABASE=pubs;APP=ASP Script"
- “系统 DSN”定义中没有选中受信任连接框。
- SQL Server 安全模式不是“Windows NT 集成”。
- 在连接属性中,uid 不为空。
Microsoft OLE DB provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed- User:_
Reason:Not defined as a valid user of a trusted SQL Server connection.
Global.asa
是否使用 Global.asa 文件是可选的。在其位置上,通常由此文件创建的项目可以放到应用程序调用的第一页上。假定 ASP 脚本位于一个文件夹中,该文件夹在“Internet 服务管理器”中没有定义为虚拟目录,而是位于另一个虚拟目录下面,那么,包含 Session 变量和 DSN 定义的 Global.asa 文件就必须保留在此虚拟目录中。否则,将出现以下错误信息:Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified
ASP 脚本中的连接
通过打开和关闭到每个 Active Server Page 上的数据库的连接来利用连接池。要打开此连接,请在页面的 <Body> 部分中键入以下语句:<%要关闭此连接,请将以下内容放到 </Body> 标记后:
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open Session("ConnectionString")
%>
<% OBJdbConnection.Close Set OBJdbConnection = Nothing %>如果没有象本文前面介绍的那样正确定义连接设置,您可能会收到以下两条错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][DBNMPNTW]Connection broken.
- 或 -
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver]Communication link failure
此处是一个包含 Global.asa 和 Authors.asp 文件的示例应用程序。此示例应用程序将返回名为 authors 的 pubs 表中的四列和所有记录。
注意:您必须先将 UID <用户名> 和 pwd =<强密码> 更改为正确的值,然后才能运行此代码。请确保该 UID 具有在数据库中执行此操作所需的适当权限。
Global.asa
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
Session("ConnectionString") =
"DSN=SQLSysDSN;UID=<username>;PWD=<strong password>;" & _
"DATABASE=pubs;APP=ASP script"
Session("ConnectionTimeout") = 15
Session("CommandTimeout") = 30
End Sub
Sub Session_OnEnd
End SubAuthors.asp
</SCRIPT>
<HTML>
<HEAD>
<TITLE>All Authors</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<% Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.ConnectionTimeout = Session("ConnectionTimeout")
OBJdbConnection.CommandTimeout = Session("CommandTimeout")
OBJdbConnection.Open Session("ConnectionString")
Set SQLStmt = Server.CreateObject("ADODB.Command")
Set RS = Server.CreateObject ("ADODB.Recordset")
%>
<p>
<table border="0" bordercolor="#000000">
<%
SQLStmt.CommandText = "select * from authors"
SQLStmt.CommandType = 1
Set SQLStmt.ActiveConnection = OBJdbConnection
RS.Open SQLStmt
Do While Not RS.EOF有关 Active Server Pages 的更多信息,请参见 IIS 服务器上 ASP 安装程序提供的路径图 (Roadmap)。
%>
<TR>
<TD Width = 150 ALIGN=LEFT>
<FONT SIZE=+1>
<%= RS("au_id") %>
</FONT></TD>
<TD></TD>
<TD Width = 150 ALIGN=LEFT>
<FONT SIZE=+1>
<%= RS("au_lname") %>
</FONT></TD>
<TD Width = 150 ALIGN=LEFT>
<FONT SIZE=+1>
<%= RS("au_fname") %>
</FONT></TD>
<TD Width = 150 ALIGN=LEFT>
<FONT SIZE=+1>
<%= RS("phone") %>
</FONT></TD>
</TR>
<%
RS.MoveNext
Loop
%>
</table>
<hr>
<p>
</BODY>
<% OBJdbConnection.Close
Set OBJdbConnection = Nothing
%>
</HTML>
参考
有关 Microsoft Visual Basic .NET 编码技术的更多信息,请访问以下 Web 站点:http://www.microsoft.com/mspress/books/4909.asp
Coding Techniques for Microsoft Visual Basic .NET(Microsoft Visual Basic .NET 编码技术)
Connell, John
Microsoft Press, 2001.
如果您没有看到您问题的答案,请访问 Microsoft SQL Server 新闻组,地址是: Microsoft SQL Server Newsgroups(Microsoft SQL Server 新闻组)
如果您想对本文或其他 Microsoft SQL Server 知识库文章发表评论,请给我们发邮件,地址是 Q169377
这篇文章中的信息适用于:
- Microsoft SQL Server 2000 (all editions)
- Microsoft SQL Server 7.0
- Microsoft SQL Server 6.5
- Microsoft SQL Server 6.0
- Microsoft SQL Server 4.2x
- Microsoft Internet Information Server 4.0
- Microsoft Internet Information Server 3.0
- Microsoft Internet Information Server 5.0
最近更新: | 2004-5-31 (5.0) |
关键字: | kbenv kbhowto kbinterop kbtshoot KB169377 kbAudDeveloper |