您的位置: 首页 > 技术文档 > 网络编程 > Dreamweaver 数据库路径的使用
用NoahWeb表现层制作动态网站 回到列表 Dreamweaver 限制访问的BUG
 Dreamweaver 数据库路径的使用

作者:cnbruce 时间: 2005-04-27 文档类型:原创 来自:蓝色理想

Dreamweaver MX 动态建站数据库路径的使用方法中

一,不推荐使用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文件,内容很简单

<%=server.mappath("cnbruce.mdb")%>

2,该文件和数据库文件cnbruce.mdb,共一文件夹,捆绑式一同上传。
3,在URL地址栏查看path.asp,得到cnbruce.mdb在服务器上的物理地址,拷贝该路径。
4,将本地的conn.asp中的物理路径,替换后再上传。一切OK!

特点:
1,虽然平台移植不很强,但全面支持所有站点中文件连接,况且也就是本地和服务器间两者间的移植。
2,防止%5c暴库间接获得数据库地址。
3,现在越来越多的空间建议将数据库文件放放到非Web访问目录中(当然具体的路径获得又是另外一种方法了),这就必须要求用户使用物理路径了。

所以,我的观点是:

Dreamweaver MX 动态建站数据库路径的使用方法:

本地使用物理地址,上传服务器依然使用物理地址。


会员CJJ的补充:
如果使用DW工具建立连数据库的文件,用物理地址是个不错的方法。但通过物理地址来访问数据库的话,换个服务器或目录就需要改源文件了。所以我们可以将路径作为一个参数,传给一个建立数据库连接过程的话,就可以用相对地址来解决不同级别目录连接数据库的问题了。

只要通过调用这个过程,传了相对地址就可以了。这种方法的好处在于,可移植性增强了。可以将整个目录移植到任意的支持ASP的服务器上。

工具的好处不用多说,但太过依赖工具忽略基础也不好,我们可以简单的手工修改一下数据连接的函数代码:

  Dim oConn

  Sub OpenDBConn(a_Path)
      Dim sConn
      sConn = "provider=microsoft.jet.oledb.4.0;user id=admin;jet oledb:database password=;data source=" & Server.mappath(Trim(a_Path) & "db/zxd_order.mdb")
      Set oConn = Server.CreateObject("Adodb.Connection")
      oConn.Open sConn
  End Sub

  Sub CloseDBConn()
      On Error Resume Next
      If IsObject(oConn) Then
          oConn.Close
          Set oConn = Nothing
      End If
  End Sub

出处:蓝色理想
责任编辑:一个好孩子

◎进入论坛网络编程版块参加讨论

相关文章
Photoshop路径文字简单教程
Photoshop路径终极教程
作者文章 更多作者文章
Dreamweaver 数据库路径的使用
Dreamweaver 限制访问的BUG
DW2004 中文乱码解决方案
ASP应用之模板采用
ASP TO HTML WITH TEMPLATE
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
疯狂的程序员 第五十回
疯狂的程序员 第四十九回
疯狂的程序员 第四十八回
疯狂的程序员 第四十七回
疯狂的程序员 第四十六回
疯狂的程序员 第四十五回
疯狂的程序员 第四十四回
疯狂的程序员 第四十三回
疯狂的程序员 第四十二回
疯狂的程序员 第四十一回
栏目最新 栏目最新列表
火星人的耳机
公司正式宣布创业失败
用corelDEAW 12打造唇膏
二行代码解决全部网页木马
一行代码解决iframe挂马
Photoshop制作星空爆炸效果
CorelDraw 12打造休闲裤
Firework如何画特殊的切角图形
Firework打造韩式风格的手提袋
flash实例:打造佛光效果

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文总共有 7 条评论,现在显示最新的 5 条。评分:- llllllllllllllllllll + 评分人数: 3 ,平均分: 3.67


erlouhouzuo Publish at 2006-6-8 17:13:15
我将我的连接文件conn.asp按照上面会员CJJ贴出的函数代码修改为以下代码,上传测试后还是没用,请问哪位指教下到底是什么原因?
<%
Dim Conn

  Sub OpenDBConn(a_Path)
      Dim sConn
      Conn = "provider=microsoft.jet.oledb.4.0;user id=;jet oledb:database password=;data source=" & Server.mappath(Trim(a_Path) & "/database/visitors.mdb")
      Set Conn = Server.CreateObject("Adodb.Connection")
      Conn.Open sConn
  End Sub

  Sub CloseDBConn()
      On Error Resume Next
      If IsObject(oConn) Then
          Conn.Close
          Set Conn = Nothing
      End If
  End Sub
%>


补充:我的数据库文件名:visitors.mdb,放在database文件夹下。按照上面cnbruce作者的方法我测试了数据库上传到服务器后物理地址是:D:\website\hsyishu.com#fgjgfdsg\database\visitors.mdb



itmyth Publish at 2005-9-21 16:07:10 评分3
在网站服务器不能为自己掌控的情况下,获得数据库的绝对地址的确是一件麻烦事,况且,不是每个使用网站后台系统的人都懂得去修改这个部分的源代码的。

cjj Publish at 2005-5-22 13:51:48
我认为这样做很不妥,之所以在使用Server.Mappath()时出现问题,个人认为是因为没有理解ASP中include的处理方法。
文件a.asp,include了b.asp,这时是将b.asp的代码包含在a.asp中,然后一起解释的,而不是在包含进来时就已经把b.asp解释好了。所以在b.asp中如果使用了Server.Mappath()方法,它将会随着a.asp的位置不同产生路径不对的错误提示了。

关于这个问题,我们可以将数据库连接这个处理过程封装在一个函数中,在调用函数时,指定相对路径来避免。另外,就是cnbruce说的方法了,不过那样做就牺牲了可移植性了,那样在上传时造成麻烦。

工具可以减轻我们的负担,但也不能太过于依赖工具,而忽略了基础的知识,造成不必要的麻烦
widx Publish at 2005-5-17 15:03:35 评分4
大致意思明白了,可是不能实现。
到底在连接字符串里输入什么呢?
我输入
DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("E:\web\news\data\bx.mdb")
怎么不行?
gaolianli Publish at 2005-5-13 16:35:20 评分4
谢啦,不错哟.

查看全部评论

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
大师之路--Photoshop 完全解析
《超越CSS》新书上市
Don't Make Me Think 第2版
HTML与CSS入门经典(第7版)
《FLASH MX2004网站开发精粹》
《CSS入门经典》
《设计师谈网页设计思维》
作品集 更多内容

北京最好的时光即将到来 佳能在线反馈信息 Treasure cute&nbsp;sign Team&nbsp;Toyak OPPO门户网 贵港市财政局 黑色习作