Server.MapPath将包含CNN.ASP文件的页面文件的所在路径做为了当前路径

2023-12-05 20:48

本文主要是介绍Server.MapPath将包含CNN.ASP文件的页面文件的所在路径做为了当前路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

F1目录是后台管理程序所在,F2目录下的MYDATA.MDB是数据库文件,CNN.ASP中写明了数据库的连接方式,在其他文件中以包含文件的方式来使用。

 

因为MYDATA.MDBCNN.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

 

      就这些了,扔砖头吧

 

这篇关于Server.MapPath将包含CNN.ASP文件的页面文件的所在路径做为了当前路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/459086

相关文章

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

【408DS算法题】039进阶-判断图中路径是否存在

Index 题目分析实现总结 题目 对于给定的图G,设计函数实现判断G中是否含有从start结点到stop结点的路径。 分析实现 对于图的路径的存在性判断,有两种做法:(本文的实现均基于邻接矩阵存储方式的图) 1.图的BFS BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点i就表示存在路径start->i,故只需判断每个结点i是否就是stop

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

图的最短路径算法——《啊哈!算法》

图的实现方式 邻接矩阵法 int[][] map;// 图的邻接矩阵存储法map = new int[5][5];map[0] = new int[] {0, 1, 2, 3, 4};map[1] = new int[] {1, 0, 2, 6, 4};map[2] = new int[] {2, 999, 0, 3, 999};map[3] = new int[] {3, 7

red5-server源码

red5-server源码:https://github.com/Red5/red5-server

vcpkg子包路径批量获取

获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” ) import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages"