網頁三劍客以其簡單易學迅速被廣大愛好者所青睐,尤其是DW已成為初學者制作網站的首選工具。但我們在用DW制作ASP+access程序時,經常會出現這樣或那樣的錯誤,尤其是數據庫方面顯得特別突出。本文就此方面出現的一些常見的問題談談其原因及解決辦法。
一、上傳網頁時出現如下錯誤:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序
此類錯誤出現的情況大多是在用DW建立站點時運行到下面的步驟時我們選擇了第一項或第二項,如圖一:
圖一
1、當選擇了第一項時,我們開發的ASP程序是在本地編輯和測試。在應用數據庫時建立數據庫連接大多采用的是DSN或自定義連接字符串
用DSN時如圖二所示:
圖二
DSN是用ODBC數據源管理器建立。我們知道DSN有用戶DSN、系統DSN、文件DSN三種,其中用戶DSN與系統DSN只能用於當前機器,不能為別的機器所用。而在用DW建立ASP程序時在上圖的第二項只能顯示系統DSN,因此當我們將ASP程序上傳或到別的機器運行時便會出現上述問題。
用自定義連接字符串時如圖三所示:
圖三
連接字符串包含 Web 應用程序連接到數據庫所需的全部信息。
Driver 指定在沒有為數據庫指定 OLE DB 提供程序時所使用的 ODBC 驅動程序。
DBQ 是指向基於文件的數據庫(如在 Microsoft Access 中創建的數據庫)的路徑。該路徑是在測試數據庫文件的服務器上的路徑。
下面是一個連接字符串示例,它將創建與名為book.mdb 的 Access 數據庫的 ODBC 連接:Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\book\trees.mdb。Dreamweaver 在服務器端腳本中插入該字符串,以便應用程序服務器隨後進行處理。當我們將ASP程序上傳或到別的機器運行時如果測試的路徑與連接字符串的數據庫路徑不一致時,便會發生上述問題。
2 當選擇了第二項時,我們開發的ASP程序是在本地編輯,然後上傳到遠程服務器測試。建立數據庫連接也采用的是DSN或自定義連接字符串,不同的是都采用的測試服務器上的DSN或連接字符串。當采用測試服務器上的DSN時同樣也只能用系統DSN於是當到別和機器運行ASP程序時,也就產生了同樣的問題。當采用自定義字符串時如果測試的路徑與連接字符串的數據庫路徑不一致時,也會發生同樣的問題。
從以上分析可知,要使自己用DW開發的ASP程序具有可移植性最好采用自定義字符串(也可采用文件DSN但對於初學者用自定義字符串容易些)。其具體情況如下:
對於建立站點時選擇在本地編輯與測試,可采用此自定義連接字符串: Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\book\trees.mdb(d:\book表示數據庫文件的實際路徑);D而對於在本地編輯然後上傳到遠程服務器測試,若要將非 DSN 連接字符串寫入位於遠程服務器,必須知道該文件的實際路徑.如果不知道文件在遠程服務器上的實際路徑,則可以通過在連接字符串中使用 MapPath 方法來獲取該路徑。其自定義連接字符串為: 如果使用 VBScript 作為腳本撰寫語言,連接字符串可表示如下:Driver={Microsoft Access Driver (*.mdb)};DBQ=” & Server.MapPath("/book/book.mdb");如果使用 javascript,表達式將基本相同,只是要使用加號 (+) 而不是 & 號來串聯兩個 字符串,連接字符串可表示如下:Driver={Microsoft Access Driver (*.mdb)};DBQ=” +Server.MapPath("/book/book.mdb")這樣我們便可以順利地移植ASP程序了(注意一定要將數據庫文件上載到遠程服務器。記下它的虛擬路徑,例如”/book/book.mdb”,否則將會出錯)。 其時很多時候當我們發現類似的錯誤提示都應該考慮到是否因為數據庫連接產生了問題,如果是便可使用上述方法解決.
二、ADODB.Field (0x800A0BCD)BOF 或 EOF 中有一個是“真”,或者當前的記錄已被刪除,所需的操作要求一個當前的記錄。
這種錯誤常產生於網頁之間傳遞數據.我們知道ASP應用程序時一般至少擁有二個或二個以上的Web頁面,這時就得考慮在多個Web頁面間傳遞數據的處理工作。網頁間數據傳遞的常用方法有:URL方式、FORM方式、COOKIE、APPLICATION、SESSION。其中URL方式和form方式實現方法簡單,可實現網頁間的簡單數據傳遞(也是我們初學者能快速掌握的)而且必須是連續訪問兩頁面間數據傳遞。如在制作網站搜索引擎時,便要用到FORM方式傳遞參數。又如我們每每看一些網站在用戶注冊後,便可在下一個頁面看出到用戶的詳細信息。但我們用DW制作類似的頁面時則總出現這樣的錯誤。這樣的錯誤一般屬於記錄集(recordset)的問題.這類問題發生的原因,一般是執行了查詢條件,但送回的結果卻是空的,即沒有符合查詢條件的記錄或是執行了循環,執行到第一個或是最後一個記錄集的時候,沒有及時終止循環,所以產生了錯誤。解決此問題就要用到網頁間的數據傳遞,可用FORM參數、URL參數或階段變量(如SESSION)來決定查詢條件。
三、在DW中,因打開數據庫造成的常見錯誤
1 在運行程序時,因打開數據庫造成的錯誤
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'
12下一頁