ASP連接數(shù)據(jù)庫(kù)的方法一般有兩種,分別是使用OLE DB字符串建立和使用ODBC字符串建立。一般和ASP配套的數(shù)據(jù)庫(kù)就是Access和SQLServer,小型網(wǎng)站尤其以Access數(shù)據(jù)庫(kù)為多。很多客戶在自己編程的過(guò)程中,對(duì)數(shù)據(jù)庫(kù)連接代碼一直搞不清楚如何來(lái)寫,造成程序運(yùn)行后提示各種各樣的錯(cuò)誤。本篇文章就幫助大家解決ASP連接數(shù)據(jù)庫(kù)的各種問(wèn)題。
一個(gè)典型的錯(cuò)誤是不能打開注冊(cè)表關(guān)鍵字,?體出錯(cuò)信息如下:
Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 '80004005'
[Microsoft][ODBC Microsoft Access Driver]常見錯(cuò)誤 不能打開注冊(cè)表關(guān)鍵字 'Temporary (volatile) Jet DSN for process 0x530 Thread 0x13f8 DBC 0x2167024 Jet'。
正確的連接數(shù)據(jù)庫(kù)代碼應(yīng)該怎么寫呢?下面給出示例代碼:
1、ASP連接SQLServer數(shù)據(jù)庫(kù)
Set conn=Server.CreateObject("ADODB.Connection")
connstr="Provider=SQLOLEDB;Server=local;UID=sa;PWD=123;DataBase=mydb"
conn.Open connstr
其中Server是SQLServer數(shù)據(jù)庫(kù)的地址,如果和空間在一臺(tái)服務(wù)器就用local,不在一臺(tái)服務(wù)器就用IP地址。UID是數(shù)據(jù)庫(kù)用戶名,PWD是數(shù)據(jù)庫(kù)密碼,DataBase是數(shù)據(jù)庫(kù)名。
2、ASP連接Access數(shù)據(jù)庫(kù)
Set conn=Server.CreateObject("ADODB.Connection")
'使用OLE DB字符串建立
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=指向mdb的物理路徑"
'使用ODBC字符串建立
connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=指向mdb的物理路徑"
conn.Open connstr
兩種connstr字符串任選其一,指向mdb的物理路徑要用Server.Mappath()函數(shù)。比如數(shù)據(jù)庫(kù)文件的位置是/db/mydb.mdb,?么就可以寫成Server.Mappath("/db/mydb.mdb")。總之,這個(gè)函數(shù)的功能是把相對(duì)路徑轉(zhuǎn)換成絕對(duì)路徑。
數(shù)據(jù)庫(kù)連接代碼報(bào)錯(cuò)的原因有很多,客戶可以從以下幾個(gè)方面來(lái)分析。
1、數(shù)據(jù)庫(kù)連接代碼是否正確。如果是SQLServer數(shù)據(jù)庫(kù),仔細(xì)檢查數(shù)據(jù)庫(kù)主機(jī)、數(shù)據(jù)庫(kù)用戶名、數(shù)據(jù)庫(kù)密碼以及數(shù)據(jù)庫(kù)名這四個(gè)關(guān)鍵參數(shù)是否正確。如果是Access數(shù)據(jù)庫(kù),則檢查是否使用了數(shù)據(jù)庫(kù)的絕對(duì)路徑,必要的時(shí)候把connstr連接字符串用Response.Write輸出看一下是否符合ASP語(yǔ)法。
2、Access數(shù)據(jù)庫(kù)是否有讀寫權(quán)限。程序運(yùn)行過(guò)程中,不可避免的要讀寫Access數(shù)據(jù)庫(kù)。比如用戶注冊(cè),添加新聞,刪除消息,都是對(duì)數(shù)據(jù)庫(kù)的讀寫,所以整個(gè)網(wǎng)站的權(quán)限一定要設(shè)置好?,F(xiàn)在大部分空間商默認(rèn)都是開通讀寫權(quán)限的,除非您不小心在空間管理面板中關(guān)閉了寫入權(quán)限。
3、還有一種情況,就是空間滿了。在排查了各種可能的原因之后,仍然報(bào)數(shù)據(jù)庫(kù)連接錯(cuò)誤,則很有可能是空間已經(jīng)滿了。因?yàn)榇蟛糠痔摂M主機(jī)都是采用磁盤配額,對(duì)空間的容量有嚴(yán)格限制。如果空間已經(jīng)滿了,不僅通過(guò)FTP無(wú)法上傳任何文件,數(shù)據(jù)庫(kù)連接的時(shí)候也同樣會(huì)報(bào)錯(cuò)。