我有一个文件header.asp
,其服务器端包含head.asp
。在head.asp
内部,我创建了与数据库的连接,可以从header.asp
文件和使用header.asp
文件作为服务器端包含的页面访问(在这种情况下,我的core.asp
文件)。在core.asp
内,我有以下内容:
if request.querystring("page") = "" then
response.write("<p>No data to load</p>")
else
page = request.querystring("page")
set fso = createobject("scripting.filesystemobject")
FileName = "../Pages/" & page & ".asp"
if fso.FileExists (server.mappath(FileName)) then
Server.Execute(FileName)
else
response.write("<p>Could not validate page. Try again.</p>")
end if
end if
执行得很好,并在core.asp
文件中呈现正确的页面。我的问题是,连接字符串(来自head.asp
)对于从Server.Execute
调用的文件不可用。因此,除非我重新实例化对象,否则我无法在此页面上运行数据库查询等。有没有办法使用创建的对象?
如果我没有正确解释,我将阐述,因为我能够给出我的中级经验水平。
答案 0 :(得分:0)
将此对象分配给会话变量,您可以从任何您喜欢的页面访问它......
Session("MyConnectionObj")= CONN
CONN是您最初实例化连接的页面上的实例化连接对象。在你执行的文件中只需调用
set NewCONN=Session("MyConnectionObj")
RS.Open strSql ,NewCONN,1,1
其中strSql是你的SQL,RS是你的记录集等等......显然,如果你调用存储过程,它看起来会略有不同,但你明白了。
编辑显示必须在使用它之前声明和设置对象。至少我看到一个&#34;专家&#34;我不知道。
根据Window Frog的评论编辑:
你是否尝试过这样做:
<%
if request.querystring("page") = "" then
response.write("<p>No data to load</p>")
else
page = request.querystring("page")
set fso = createobject("scripting.filesystemobject")
FileName = "../Pages/" & page & ".asp"
if fso.FileExists (server.mappath(FileName)) then%>
<!--#include file="<%=FileName %>" -->
<% else
response.write("<p>Could not validate page. Try again.</p>")
end if
end if
%>
答案 1 :(得分:0)
作为对#1的回答,如果我正确地遵循逻辑,我正在尝试在应用程序级别创建连接对象(global.asa):
Sub Application_OnStart()
dim oConn, connectstr
set oConn = Server.CreateObject("ADODB.Connection")
connectstr = "Driver={MySQL ODBC 3.51 Driver};SERVER=theServer; DATABASE=theDatabase; UID=theUserID; PWD=thePassword"
oConn.ConnectionTimeout = 5
oConn.Open connectstr
Application("con") = oConn
end Sub
</script>
尝试从包含global.asa作为IIS的页面访问这样的对象: qryAdmin =“select * from table” set rsAdmin = Application(“con”)。execute(qryAdmin)
结果是一样的。我收到“需要对象”错误。任何可能引起这种情况的明显错误?