• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

ASP中access数据库的路径问题

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 43次 | 进入软件测试论坛讨论

领测软件测试网 自己平时做的网站大多使用的是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



就这些了,扔砖头吧



延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网