asp连access的解决办法

在ASP连接ACCESS经常会遇到这样的问题,一级目录外的某个文件想引用数据库
连接文件(inc/conn.asp),而二级目录下某个文件也想引用这个文件,但就是
引用不成功,在conn.asp中使用Server.Mappath来取得数据库文件的绝对路径
如下代码:(服务器路径为D:/tmp)
inc/conn.asp
dbpath="db/db.mdb" '实际路径为D:/tmp/db/db.mdb
constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath(dbpath)

直接访问inc/conn.asp,Server.Mappath为D:/tmp/inc,Server.Mappath(dbpath)为D:/tmp/inc/db/db.mdb,
与实际路径不符a

假设根目录下有一1.asp,则当1.asp包含inc/conn.asp时,Server.Mappath为当前路径
即(D:/tmp),则Server.Mappath(dbpath)为D:/tmp/db/db.mdb,与实际路径相同

若dbpath="../db/db.mdb"时,直接访问,得到路径为D:/tmp/db/db.mdb,1.asp访问,得到路径D:/db/db.mdb

这是什么原因呢?这是因为Server.Mappath返回的是当前路径,尽管1.asp包含inc/conn.asp,但ASP的运行机制是:
遇到include时,将被include的文件(即conn.asp)的代码复制到1.asp里,再执行,即Server.Mappath返回的是1.asp
的路径而不是inc/conn.asp的路径

如何两全呢?有人说,对不同情况写不同conn.asp,这也太那个了吧?
我写一个函数

function getdbpath(path)
a=Request.ServerVariables("URL")
b=split(a,"/")
if Ubound(b) > 2 then
getdbpath="../" & path
else
getdbpath=path
end if
end function
将dbpath传入getdbpath后再Server.Mappath
对dbpath的要求是不以"/"开头,以inc的上级目录下为基准 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值