欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP 包含文件中的路径问题和使用单一数据库连接文件的解决方案

程序员文章站 2023-09-06 14:15:20
啥都不说了,直接奉献原代码 复制代码 代码如下:'==========注意=============================================== '...
啥都不说了,直接奉献原代码
复制代码 代码如下:

'==========注意===============================================
' 1、网站所在文件夹的名字不能为“root”
' 2、网站所在文件夹的名字,物理路径中不允许出现重复此文件夹名,如f:\t\t,t为网站所在文件夹名,这种情况会出错
'=============================================================
dim dbpath,dbname,db,connstr,websitefoldername
on error resume next

websitefoldername="weldsitebuilder"
dbpath = "_sitedata\" '注意是反斜杠,且只有末尾有
dbname = "acteedata.mdb" '数据库名称
db=getsitephysicalpath(websitefoldername) & dbpath & dbname
'response.write("当前数据库物理路径:"&server.mappath(db))
'response.write("<hr>")
'response.write("当前请求访问的页面路径:"&request.servervariables("url"))
'response.write("<hr>")
'response.write("当前站点的根路径:"&request.servervariables("appl_physical_path"))
'response.write("<hr>")
'response.write("当前站点的路径状况:"&request.servervariables("appl_md_path"))
'response.write(db)
'response.end()
'======================
set conn=server.createobject("adodb.connection")
connstr="provider=microsoft.jet.oledb.4.0;data source="&db
conn.open connstr
if err then
err.clear
set conn = nothing
response.write "数据库连接错误!"
response.end
end if

sub closeconn()
conn.close
set conn=nothing
end sub

'获取网站所在目录的绝对路径(带“\”号)
function getsitephysicalpath(wsfn)
dim appl_md_path,appl_md_patharray,path,wspp
wspp=request.servervariables("appl_physical_path")'默认网站是在根目录下运行

appl_md_path=request.servervariables("appl_md_path")
appl_md_patharray=split(appl_md_path,"/")
path=appl_md_patharray(ubound(appl_md_patharray))
if ucase(path)="root" then '判断网站是不是在独立的应用程序下运行
'再判断网站是不是在某个文件夹下运行
if instr(wspp,wsfn)=0 then '网站在根目录下的一个文件夹下运行
'根据受访页面的地址拼出网站所在文件夹的地址
dim currenturl,namearray
currenturl=request.servervariables("url")
namearray=split(currenturl,"/")
for i=lbound(namearray) to ubound(namearray)
if ucase(namearray(i))=ucase(wsfn) then
for j=0 to i
wspp=wspp+namearray(j)+"\"
next
exit for
end if
next
else '表明网站是在根目录下运行
'什么都不必做,返回值已经初始化了
end if
else '表明网站是在虚拟目录下运行
'什么也不做,返回值已经初始化了
end if
wspp=replace(wspp,"\\","\")
getsitephysicalpath=wspp
end function

ps:以上只是针对access数据库解决的包含路径不对的问题,使站点能公用一个数据库连接文件,任意一个文件包含它,数据库都能正常打开,并且不必理会网站是怎么运行的(根目录下运行,虚拟路径下运行,根目录+网站所在目录下运行)。