一,不推荐使用Server.Mappath(相对文档路径地址的数据库文件)
虽然具有平台移植性,但对于不同层次,不同深度下的引用该数据库的文件,将不能完整地保证数据库路径的正确性。
举个例子:
1,数据库文件cnbruce.mdb,所在文件夹database(可http访问)
2,DW自动生成的连接数据库文件conn.asp,所在文件夹Connections
3,如果在DW中测试连接路径成功,则必须输入地址为Server.Mappath("../database/cnbruce.mdb")
但随后引用该数据库连接的文件必须保存在某文件夹中,该文件夹和database是同等的
即:
- database
- cnbruce.mdb
- Connections
- conn.asp
- 某文件夹
- x1.asp
这种结构才能使用正常。但这就必须要求站点中,所有引用了连接数据库文件的文件,必须存放在站点的一级目录下。显然这是不合理的,比如这样的结构。
- x2.asp
- database
- cnbruce.mdb
- Connections
- conn.asp
- 某文件夹
- 某子文件夹
- x3.asp
则x2.asp和x3.asp均不能正常显示。
原理分析:无论conn.asp放在哪里,无论conn.asp的内容如何,最后都是取决于引用了conn.asp的文件的文件位置和数据库的位置关系。具体解释: http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=423
解决办法:在conn.asp中进行判断当前路径,根据不同级别值给出不同链接路径……对于初学者来说,麻烦。
第二种解决方法就是采用相对根目录法,但也是不推荐使用。
二,不推荐使用Server.Mappath(相对根目录路径的数据库文件)
使用这种方法,首先需要将IIS默认站点调整到当前DW站点所在文件夹(XP系统),或建立一个站点指向该文件夹(2K等系统)。
反正一句话,就是当你输入 http://localhost/ 时,显示的内容已不是默认的IIS首页,而是你所设置的DW站点文件夹中的默认首页文档。
那么在设置了该IIS站点之后
1,数据库文件cnbruce.mdb,所在文件夹database(可http访问)
2,DW自动生成的连接数据库文件conn.asp,所在文件夹Connections
3,如果在DW中测试连接路径成功,则输入地址为Server.Mappath("/database/cnbruce.mdb")
/database/cnbruce.mdb 该方法就是相对根目录,高屋建瓴式的进行数据库路径的获得,无论哪个层次的,哪个目录下的站点文档均能正常显示。
但依然不推荐!原因如下:
在本地你可以自行修改IIS的站点,当上传到服务器或虚拟主机时,麻烦就来了。
1,如果你的虚拟主机服务商技术不过关,当在解析你网站根目录的时,不是指向到你的站点文件夹,而是指向服务器系统盘下的wwwroot文件夹。于是路径肯定错误。
2,如果你需要上传的并不是你的站点根目录,很显然,路径也肯定会发生解析错误。
所以,不推荐?!那么,该怎么办?
三,推荐使用Server.Mappath(本地绝对物理路径的数据库文件)
很简单,这个数据库在本地你总会知道它所在的位置吧。在DW中创建时就直接使用该绝对物理路径地址。
OK,来上传了。当然不可能那么巧:上传到服务器上的数据库物理路径地址和本地数据库物理路径地址是一样的-__-!
所以,现在只需要获得上传到服务器空间上的数据库文件,在服务器上是处于什么物理地址就行了。
怎么获得?
1,建立一个path.asp文件,内容很简单
2,该文件和数据库文件cnbruce.mdb,共一文件夹,捆绑式一同上传。
3,在URL地址栏查看path.asp,得到cnbruce.mdb在服务器上的物理地址,拷贝该路径。
4,将本地的conn.asp中的物理路径,替换后再上传。一切OK!
特点:
1,虽然平台移植不很强,但全面支持所有站点中文件连接,况且也就是本地和服务器间两者间的移植。
2,防止%5c暴库间接获得数据库地址。
3,现在越来越多的空间建议将数据库文件放放到非Web访问目录中(当然具体的路径获得又是另外一种方法了),这就必须要求用户使用物理路径了。
所以,我的观点是:
Dreamweaver MX 动态建站数据库路径的使用方法:
本地使用物理地址,上传服务器依然使用物理地址。