ASP中access数据库的路径问题
来源:互联网 发布:unity3d室内 场景模型 编辑:程序博客网 时间:2024/05/02 02: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
该网站的目录设置如下(只列出了相关部分)
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
- ASP中access数据库的路径问题
- ASP中access数据库的路径问题
- ASP.NET连接ACCESS数据库的相对路径问题
- asp.net操作ACCESS数据库路径问题的解决方案、实用技巧
- Asp.Net 2.0连接ACCESS数据库相对路径问题,web.config中如何使用相对路径
- ACCESS数据库在.net程序中相对路径的问题
- Asp.Net中使用Access数据库配置文件使用相对路径问题
- 发布数据库路径不对的问题. access
- ASP.NET 链接 Access 数据库路径问题最终解决方案
- Asp.Net连接ACCESS数据库相对路径问题
- Access数据库在asp.net程序中相对路径的解决方法
- [NET]Access数据库在asp.net程序中相对路径的解决方法(转)
- Access数据库在asp.net程序中相对路径的解决方法
- Asp.Net连接ACCESS数据库相对路径问题,web.config中如何使用相对路径及在类文件中调用这个相对路径
- Access数据库在asp.net2.0相对路径的解决方法
- Asp.net相对路径连接Access数据库的方法
- asp+access数据库写入问题
- Access数据库在C#.net下的存储路径问题
- 领略世界杯开赛以来最大的激情 - 意大利:目标,柏林!
- 又是上午没过
- MY NEW PAGE WITH MY NEW TUTORIALS by Ricardo Narvaja
- 职业迷茫时,给自己讲个故事
- 程序员要喝牛奶吃花生
- ASP中access数据库的路径问题
- .NET消息传送过程中的涉及到加密解密示例图
- js脚本学习
- 解决死锁一例
- SSDBGrid-Sort By Col
- 雪夜与我的女秘书堵车后........
- struts+newxy(新坐标)文件上传,比jspsmart更简单 作者:胡立新
- 上课没精神,想睡觉。
- msxml3.dll 错误'800c0005' 系统未找到指定的资源错误,