在我开发ASP + Access的Web应用时,都会遇到数据库文件路径的定位问题。如果在自己的计算机上实现时可以直接指定了事,但如果做的项目要上传到别的服务器或移动别的机器上运行使用,每次都要把这个路径改来改去的话显得有些繁锁,下面结合我做这个网站的经验来解决这个问题,让我们可以“一劳永逸”。
在ASP中使用Server.MapPath("file.asp")语句后,会返回该文件在本地驱动器上的绝对路径,如“D:\MySite\test\file.asp”,所以在不同的子目录的不同文件使用这条语句就只会返回那个文件所在路径,这样我们就不能简单地利用这条语句解决上面的问题,但只要稍加利用这条方法和其它与个字符函数就可以轻松解决上面的问题。
现在假设你的站点目录结构如下:
MySite
|- db
|- db1.mdb
|- db2.mdb
|- sub_folder
|- hello.asp
|- search.asp
|- index.asp
只要我们在需要访问数据库的asp文件中加入以下语句:
if session("rootDir") = "" then
dim str
str = Server.MapPath("db")
session("rootDir") = Mid(str, 1, InStr(1, str, "MySite", 1) - 1) & "MySite\db"
end if
...
Set conn = Server.CreateObject("adodb.connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & session("rootDir") & "\db1.mdb" & ";pwd=" & pw
这样在session("rootDir")中就存放你站点中子目录“db”的绝结路径,当你改变你站点的主目录或移到别的机器的情况下就可以不需要理会数据库文件的存取路径问题了。