ASP里鏈接數(shù)據(jù)庫出錯的經(jīng)驗分享
本文分享的是一個作者的小經(jīng)驗之談,關(guān)于ASP里鏈接數(shù)據(jù)庫出錯的經(jīng)驗分享,希望能幫助到大家。
首先申明,我不是什么高手,只是結(jié)合自己的那點微不足道的經(jīng)驗,以及一直有人在QQ上問我,很多相關(guān)數(shù)據(jù)庫操作的問題,大多總接下來,其實和很多ASP程序員自己對數(shù)據(jù)庫相關(guān)知識的領(lǐng)會多少有關(guān)系,剛好今天在CSDN上看到有人在討論這樣的問題,我覺得有必要理清楚很多自己或他人不清楚的內(nèi)容。
對與數(shù)據(jù)庫操作的理解,看看下面的內(nèi)容,也許會更清楚一些!
1) 用SET建立連接對象 (這里是建立程序和數(shù)據(jù)庫操作通道,
set cnobj = Server.CreateObject("ADODB.Connection")
2)給出數(shù)據(jù)庫驅(qū)動的生產(chǎn)廠商和版本號以及你的ACCESS數(shù)據(jù)庫所在的位置
strcon="provider=microsoft.jet.oledb.4.0;data source="&Server.MapPath("/wang/data/bbs.mdb")
記住:strcon是字符串變量你可以隨便給,server.mappath是取數(shù)據(jù)庫的磁盤路徑,后面所跟的一定是站點路經(jīng)。
本句也可以寫成:
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath("("/wang/data/bbs.mdb")")
3)用鏈接對象的OPEN方法打開數(shù)據(jù)庫
cnobj.Open strcon
到此連接完成,后面就是建立記錄集對象了,如:
set rstobj=server.createobject("adodb.recordset") '此句用SET語句建立記錄集對象RSTOBJ
set rstobj=cnobj.execute("select * from users") '此句利用cnobj對象的execute方法執(zhí)行SELECT查詢語句,users是庫中的表名稱
帶密碼的連接:
Conn1.Open "Provider=Microsoft.JET.OLEDB.3.51;" & _
"Data Source=G:\ComponentSource\DBFiles\CSMain\CSMain.mdb;" &
"Jet OLEDB database Password=outlook"
問題現(xiàn)象比較多的一類就是:
以前一切正常的程序,現(xiàn)在運行的時候提示如下信息:
Microsoft VBScript 編譯器錯誤 錯誤 '800a03f6' 缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'
[Microsoft][ODBC Microsoft Access Driver]常見錯誤 不能打開注冊表關(guān)鍵字 'Temporary (volatile) Jet DSN for process 0x570 Thread 0x738 DBC 0x242e404 Jet'。
/bbs/index.asp,行7
為什么?我也說不清楚,但是我的經(jīng)驗就是這樣,因為Windows2000 SP2以后的新bug造成的。也許微軟不喜歡ODBC了,所以出此下策。正確的方法是使用OLEDB來連接Access。連接字符串為:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=數(shù)據(jù)庫文件名
我不知道我這樣理解對不對,OLEDB比ODBC更直接面向數(shù)據(jù)庫,這樣打個比方,如果你希望到電影院去看電影,從家里出門,有兩路車可以到電影院,兩路車為100路和10路,100路車需要在某站下車然后換10路在走一個站可以到電影院,10路當(dāng)然可以直接到電影院,可能都成習(xí)慣了,搭公車喜歡做100路車,呵!雖然我也知道10路可以直達目的地。這里非常羅嗦,也有些不符合一般常人的邏輯(大款除外),問題是我要說的ODBC和OLEDB就相單于100路和10路。而電影院就是我們要操作的數(shù)據(jù)庫。那我們?yōu)槭裁床皇褂肙LEDB呢?不怕見笑。我現(xiàn)在想的就是這樣。這個問題實在太普遍了!所以說得這么多!
<%
dim DB
DB="數(shù)據(jù)庫名" '定義數(shù)據(jù)庫路徑及名稱
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DB)
%>
解接問題必須注意使用上面的連接方式! 還有很多,今天先說這些,如果我的理解有不正確的地方,希望高手牛人指正!