ASP中access資料庫的路徑問題

來源:互聯網
上載者:User
access|資料|資料庫|問題 自己平時做的網站大多使用的是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



就這些了,扔磚頭吧





相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。