在用asp连接数据库时(假设我们网站的数据库文件为data/#systemdata.mdb)
很多时候我们都是编写一个conn.asp的文件
然后在需要操作数据库的地方,就把该文件包含进来<!-- #include file="conn.asp" -->
conn.asp文件内容如下:
<%
on error resume next
dim database
dim path
dim conn
dim constr
database = "data/#systemdata.mdb"
path = server.mappath(database)
constr = "driver={microsoft access driver (*.mdb)};dbq="&path
set conn = server.createObject("adodb.connection")
conn.open constr
if err.number<>0 then
response.write("error number:"&err.number)
response.write("error description:"&err.description)
response.end()
end if
%>
然后在需要操作数据库的文件中包含该文件
<!-- #include file="conn.asp" -->
在此,如果包含conn.asp的文件和conn.asp文件在同一个目录下,系统将不会出现错误;
否则,系统将给与连接数据库失败的错误提示。
至此问题提出:如何解决网站不同目录下数据库连接问题
方案1:
在网站不同目录下制定一个特定的conn.asp文件
比如网站目录manage文件夹下面制作一个conn.asp文件
<%
on error resume next
dim database
dim path
dim conn
dim constr
'注意此处数据库路径与上面的conn.asp路径的区别
database = "../data/#systemdata.mdb"
path = server.mappath(database)
constr = "driver={microsoft access driver (*.mdb)};dbq="&path
set conn = server.createObject("adodb.connection")
conn.open constr
if err.number<>0 then
response.write("error number:"&err.number)
response.write("error description:"&err.description)
response.end()
end if
%>
其他目录下的conn.asp制作类似,只要定义正确的database的路径即可。
方案2:
只需要制作一个conn.asp文件即可
★注意:此方法只适用于,网站存放在web网站的根目录(也就是说该网站不能作为虚拟目录来访问)
<%
on error resume next
dim database
dim path
dim conn
dim constr
database = "data/#systemdata.mdb"
'注意此处多了个"/",其中"/"是为了得到网站根目录路径
path = server.mappath("/"&database)
constr = "driver={microsoft access driver (*.mdb)};dbq="&path
set conn = server.createObject("adodb.connection")
conn.open constr
if err.number<>0 then
response.write("error number:"&err.number)
response.write("error description:"&err.description)
response.end()
end if
%>
其他使用数据库的文件只要正确引用conn.asp文件即可。
方案3(也就是方案2个一个扩展,只是定义个变量存储网站虚拟目录名,方便修改):
★此方案不适用于当有其他虚拟目录名与该文件所存放的文件夹名称相同的时候
<%
on error resume next
dim database
dim path
dim virtualDirectory
dim conn
dim constr
'如果conn.asp存放在网站根目录,则virtualDirectory="/"
virtualDirectory = "/虚拟目录名/"
database = "data/#systemdata.mdb"
'注意此处多了个"/",其中"/"是为了得到网站根目录路径
path = server.mappath(virtualDirectory&database)
constr = "driver={microsoft access driver (*.mdb)};dbq="&path
set conn = server.createObject("adodb.connection")
conn.open constr
if err.number<>0 then
response.write("error number:"&err.number)
response.write("error description:"&err.description)
response.end()
end if
%>
方案4:
普遍适用根目录网站和虚拟目录网站
conn.asp
<%
on error resume next
dim database
dim path
dim directory
dim conn
dim constr
'获得该应用程序所在元数据的无理路径,不包括该文件名称
directory = Request.ServerVariables("Appl_Physical_Path")
'注意此处不再是/定义相对路径的方式
database = "data/#systemdata.mdb"
'注意此处没有server.mappath,因为已经是物理路径了
path = directory&database
constr = "driver={microsoft access driver (*.mdb)};dbq="&path
set conn = server.createObject("adodb.connection")
conn.open constr
if err.number<>0 then
response.write("error number:"&err.number)
response.write("error description:"&err.description)
response.end()
end if
%>
由于时间有限,水平宜有限,有些地方没有过多的解释和测试。
如果大家在使用过程中遇到什么错误,或不懂的地方,请提出!
希望对大家有所帮助!