Dreamweaver MX 動(dòng)態(tài)建站數(shù)據(jù)庫(kù)路徑的使用方法中
一,不推薦使用Server.Mappath(相對(duì)文檔路徑地址的數(shù)據(jù)庫(kù)文件)
雖然具有平臺(tái)移植性,但對(duì)于不同層次,不同深度下的引用該數(shù)據(jù)庫(kù)的文件,將不能完整地保證數(shù)據(jù)庫(kù)路徑的正確性。
舉個(gè)例子:
1,數(shù)據(jù)庫(kù)文件cnbruce.mdb,所在文件夾database(可http訪問) 2,DW自動(dòng)生成的連接數(shù)據(jù)庫(kù)文件conn.asp,所在文件夾Connections 3,如果在DW中測(cè)試連接路徑成功,則必須輸入地址為Server.Mappath("../database/cnbruce.mdb") 但隨后引用該數(shù)據(jù)庫(kù)連接的文件必須保存在某文件夾中,該文件夾和database是同等的
即: - database - cnbruce.mdb - Connections - conn.asp - 某文件夾 - x1.asp
這種結(jié)構(gòu)才能使用正常。但這就必須要求站點(diǎn)中,所有引用了連接數(shù)據(jù)庫(kù)文件的文件,必須存放在站點(diǎn)的一級(jí)目錄下。顯然這是不合理的,比如這樣的結(jié)構(gòu)。
- x2.asp - database - cnbruce.mdb - Connections - conn.asp - 某文件夾 - 某子文件夾 - x3.asp
則x2.asp和x3.asp均不能正常顯示。
原理分析:無論conn.asp放在哪里,無論conn.asp的內(nèi)容如何,最后都是取決于引用了conn.asp的文件的文件位置和數(shù)據(jù)庫(kù)的位置關(guān)系。具體解釋: http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=423
解決辦法:在conn.asp中進(jìn)行判斷當(dāng)前路徑,根據(jù)不同級(jí)別值給出不同鏈接路徑……對(duì)于初學(xué)者來說,麻煩。 第二種解決方法就是采用相對(duì)根目錄法,但也是不推薦使用。
二,不推薦使用Server.Mappath(相對(duì)根目錄路徑的數(shù)據(jù)庫(kù)文件)
使用這種方法,首先需要將IIS默認(rèn)站點(diǎn)調(diào)整到當(dāng)前DW站點(diǎn)所在文件夾(XP系統(tǒng)),或建立一個(gè)站點(diǎn)指向該文件夾(2K等系統(tǒng))。
反正一句話,就是當(dāng)你輸入 http://localhost/ 時(shí),顯示的內(nèi)容已不是默認(rèn)的IIS首頁(yè),而是你所設(shè)置的DW站點(diǎn)文件夾中的默認(rèn)首頁(yè)文檔。
那么在設(shè)置了該IIS站點(diǎn)之后
1,數(shù)據(jù)庫(kù)文件cnbruce.mdb,所在文件夾database(可http訪問) 2,DW自動(dòng)生成的連接數(shù)據(jù)庫(kù)文件conn.asp,所在文件夾Connections 3,如果在DW中測(cè)試連接路徑成功,則輸入地址為Server.Mappath("/database/cnbruce.mdb")
/database/cnbruce.mdb 該方法就是相對(duì)根目錄,高屋建瓴式的進(jìn)行數(shù)據(jù)庫(kù)路徑的獲得,無論哪個(gè)層次的,哪個(gè)目錄下的站點(diǎn)文檔均能正常顯示。
但依然不推薦!原因如下:
在本地你可以自行修改IIS的站點(diǎn),當(dāng)上傳到服務(wù)器或虛擬主機(jī)時(shí),麻煩就來了。
1,如果你的虛擬主機(jī)服務(wù)商技術(shù)不過關(guān),當(dāng)在解析你網(wǎng)站根目錄的時(shí),不是指向到你的站點(diǎn)文件夾,而是指向服務(wù)器系統(tǒng)盤下的wwwroot文件夾。于是路徑肯定錯(cuò)誤。
2,如果你需要上傳的并不是你的站點(diǎn)根目錄,很顯然,路徑也肯定會(huì)發(fā)生解析錯(cuò)誤。
所以,不推薦!那么,該怎么辦?
三,推薦使用Server.Mappath(本地絕對(duì)物理路徑的數(shù)據(jù)庫(kù)文件)
很簡(jiǎn)單,這個(gè)數(shù)據(jù)庫(kù)在本地你總會(huì)知道它所在的位置吧。在DW中創(chuàng)建時(shí)就直接使用該絕對(duì)物理路徑地址。
OK,來上傳了。當(dāng)然不可能那么巧:上傳到服務(wù)器上的數(shù)據(jù)庫(kù)物理路徑地址和本地?cái)?shù)據(jù)庫(kù)物理路徑地址是一樣的-__-!
所以,現(xiàn)在只需要獲得上傳到服務(wù)器空間上的數(shù)據(jù)庫(kù)文件,在服務(wù)器上是處于什么物理地址就行了。
怎么獲得?
1,建立一個(gè)path.asp文件,內(nèi)容很簡(jiǎn)單
<%=server.mappath("cnbruce.mdb")%>
2,該文件和數(shù)據(jù)庫(kù)文件cnbruce.mdb,共一文件夾,捆綁式一同上傳。 3,在URL地址欄查看path.asp,得到cnbruce.mdb在服務(wù)器上的物理地址,拷貝該路徑。 4,將本地的conn.asp中的物理路徑,替換后再上傳。一切OK!
特點(diǎn): 1,雖然平臺(tái)移植不很強(qiáng),但全面支持所有站點(diǎn)中文件連接,況且也就是本地和服務(wù)器間兩者間的移植。 2,防止%5c暴庫(kù)間接獲得數(shù)據(jù)庫(kù)地址。 3,現(xiàn)在越來越多的空間建議將數(shù)據(jù)庫(kù)文件放放到非Web訪問目錄中(當(dāng)然具體的路徑獲得又是另外一種方法了),這就必須要求用戶使用物理路徑了。
所以,我的觀點(diǎn)是:
Dreamweaver MX 動(dòng)態(tài)建站數(shù)據(jù)庫(kù)路徑的使用方法:
本地使用物理地址,上傳服務(wù)器依然使用物理地址。
會(huì)員CJJ的補(bǔ)充: 如果使用DW工具建立連數(shù)據(jù)庫(kù)的文件,用物理地址是個(gè)不錯(cuò)的方法。但通過物理地址來訪問數(shù)據(jù)庫(kù)的話,換個(gè)服務(wù)器或目錄就需要改源文件了。所以我們可以將路徑作為一個(gè)參數(shù),傳給一個(gè)建立數(shù)據(jù)庫(kù)連接過程的話,就可以用相對(duì)地址來解決不同級(jí)別目錄連接數(shù)據(jù)庫(kù)的問題了。
只要通過調(diào)用這個(gè)過程,傳了相對(duì)地址就可以了。這種方法的好處在于,可移植性增強(qiáng)了。可以將整個(gè)目錄移植到任意的支持ASP的服務(wù)器上。
工具的好處不用多說,但太過依賴工具忽略基礎(chǔ)也不好,我們可以簡(jiǎn)單的手工修改一下數(shù)據(jù)連接的函數(shù)代碼:
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
出處:藍(lán)色理想
責(zé)任編輯:一個(gè)好孩子
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|