欢迎光临
我们一直在努力

ASP中access数据库的路径问题-ASP教程,数据库相关

建站超值云服务器,限时71元/月

自己平时做的网站大多使用的是sql数据库,所以对使用access数据库的网站没有太多的接触。昨日在帮朋友做一个使用access数据库的网站后台管理程序时,遇到了一些麻烦。

该网站的目录设置如下(只列出了相关部分)

f1目录是后台管理程序所在,f2目录下的mydata.mdb是数据库文件,cnn.asp中写明了数据库的连接方式,在其他文件中以包含文件的方式来使用。

因为mydata.mdb和cnn.asp在同一目录下,因此cnn.asp中的连接语句是这么写的:

strcnn = "driver={microsoft access driver (*.mdb)};dbq=" & _

server.mappath("mydata.mdb")

由于是原来写好的,我没有仔细考虑什么,就直接在f1目录下的index.asp文件中加入f2语句

<!–#include file="../f2/cnn.asp" –>

然后运行……嗯???出错了!!

microsoft ole db provider for odbc drivers (0x80004005)

[microsoft][odbc microsoft access driver]常见错误 不能打开注册表关键字 temporary (volatile) jet dsn for process 0x94 thread 0x9a0 dbc 0x13b0074 jet。

错误提示是在open数据库时出错了,没有找到该数据库。难道是数据库路径不对?

将cnn.asp中的strcnn输出看看先

driver={microsoft access driver (*.mdb)};dbq=c:\f1\mydata.mdb

果然,路径错误!

看来,是这个server.mappath将包含cnn.asp文件的页面文件的所在路径做为了当前路径。即如果是f1目录下的index.asp包含了cnn.asp,则此时的server.mappath("mydata.mdb")就是c:\f1\mydata.mdb;如果f1目录下的news目录下某个文件包含了cnn.asp,则此时的server.mappath("mydata.mdb")就是c:\f1\news\mydata.mdb;

经过验证,证明情况确实如上。

问题发现了,就该解决了它。由于无法限定在几级目录中要包含cnn.asp文件,因此使用server.mappath就无法获取数据库正确的路径;难道要在所有使用数据库的文件中全部写入该数据库的连接?这是下下策,尽量避免。

经过n分钟的思考,终于想出了一个较为划算的方法,就是不使用虚拟路径,先确定根目录的实际路径,然后加入数据库的所在路径。实现代码如下:

cnn.asp文件:

dim strcurpath,strcurlocation

获取包含该文件的页面文件的虚拟路径

strcurpath=request.servervariables("path_info")

获取包含该文件的页面文件的实际路径

strcurlocation=request.servervariables("path_translated")

转换路径间隔符号(虚拟路径用"/"分隔,实际路径用"\"分隔)

strcurpath=replace(strcurpath,"/","\")

得到网站根目录的实际路径

strcurlocation=replace(strcurlocation,strcurpath,"")

指定数据库实际路径

strcurlocation=strcurlocation & "\f2\mydata.mdb"

set cnn = server.createobject("adodb.connection")

连接到数据库服务器,数据库名称 mydata.mdb

strcnn = "driver={microsoft access driver (*.mdb)};dbq=" & strcurlocation

cnn.open strcnn

就这些了,扔砖头吧

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP中access数据库的路径问题-ASP教程,数据库相关
分享到: 更多 (0)

相关推荐

  • 暂无文章