當前位置: 首頁IT技術(shù) → ASP里鏈接數(shù)據(jù)庫出錯的經(jīng)驗分享

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路當然可以直接到電影院,可能都成習慣了,搭公車喜歡做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) 
%> 

  解接問題必須注意使用上面的連接方式! 還有很多,今天先說這些,如果我的理解有不正確的地方,希望高手牛人指正!

熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)