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数据库解决的包含路径不对的问题,使站点能公用一个数据库连接文件,任意一个文件包含它,数据库都能正常打开,并且不必理会网站是怎么运行的(根目录下运行,虚拟路径下运行,根目录+网站所在目录下运行)。
复制代码 代码如下:
'==========注意===============================================
' 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数据库解决的包含路径不对的问题,使站点能公用一个数据库连接文件,任意一个文件包含它,数据库都能正常打开,并且不必理会网站是怎么运行的(根目录下运行,虚拟路径下运行,根目录+网站所在目录下运行)。