




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、史前那時(shí)候每個(gè)數(shù)據(jù)庫(kù)供應(yīng)商(其實(shí)也沒(méi)幾個(gè))都有自己的數(shù)據(jù)庫(kù)操作API,每個(gè)數(shù)據(jù)庫(kù)的調(diào)用函數(shù)、操作語(yǔ)句各不相同。因此,每個(gè)應(yīng)用程序只能使用一個(gè)固定的數(shù)據(jù)庫(kù),想換數(shù)據(jù)庫(kù)?沒(méi)門(mén)!你要全部重寫(xiě)應(yīng)用程序中的數(shù)據(jù)庫(kù)操作代碼。后來(lái)國(guó)際標(biāo)準(zhǔn)化組織ISO- International Organization for Standardization、IBM等說(shuō)不行,這么亂,程序員怎么活啊!于是提出了CLI(Call-Level Interface)。每個(gè)數(shù)據(jù)庫(kù)的CLI(驅(qū)動(dòng)程序)基本上相同,程序員總算好過(guò)點(diǎn)了??墒且獡Q數(shù)據(jù)庫(kù),你寫(xiě)的程序需要重新編譯或安裝。再后來(lái)MS的ODBC(Open DataDase Con
2、nectivity,開(kāi)放數(shù)據(jù)庫(kù)互連)來(lái)了,并一度成為數(shù)據(jù)庫(kù)通信的標(biāo)準(zhǔn)。ODBC它將所有對(duì)數(shù)據(jù)庫(kù)的底層操作(即CLI)全部隱藏在ODBC的驅(qū)動(dòng)程序內(nèi)核里。使用時(shí),ODBC會(huì)動(dòng)態(tài)裝載各個(gè)數(shù)據(jù)庫(kù)的CLI,把函數(shù)調(diào)用轉(zhuǎn)換成對(duì)每個(gè)數(shù)據(jù)庫(kù)的CLI調(diào)用。此時(shí),數(shù)據(jù)庫(kù)應(yīng)用程序總算和數(shù)據(jù)庫(kù)供應(yīng)商沒(méi)什么關(guān)系了。(圖形ODBC)再再后來(lái)在一切“對(duì)象化”的趨勢(shì)下, MS提出了OLE DB(Object Linking and Embedding DB,對(duì)象連接和嵌入(法)數(shù)據(jù)庫(kù)),并打算用它取代ODBC。OLE DB也需要每個(gè)數(shù)據(jù)庫(kù)提供一個(gè)CLI(現(xiàn)在叫Provider)。OLE DB標(biāo)準(zhǔn)的核心內(nèi)容就是要求各種數(shù)據(jù)存
3、儲(chǔ)都提供一種相同的訪(fǎng)問(wèn)接口。這種接口封裝了各種數(shù)據(jù)系統(tǒng)的訪(fǎng)問(wèn)操作,使數(shù)據(jù)的使用者(應(yīng)用程序)可以使用同樣的方法訪(fǎng)問(wèn)各種數(shù)據(jù),而不用考慮數(shù)據(jù)的具體存儲(chǔ)地點(diǎn)、格式或類(lèi)型。因此,OLE DB標(biāo)準(zhǔn)實(shí)際上是規(guī)定了數(shù)據(jù)使用者和提供者之間的一種應(yīng)用層的協(xié)議(Application-Level protocol)。它可以訪(fǎng)問(wèn)的數(shù)據(jù)包括標(biāo)準(zhǔn)的關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù),還包括郵件數(shù)據(jù)、Web上的文本或圖形、目錄服務(wù),以及主機(jī)數(shù)據(jù)庫(kù)(如DB2)、服務(wù)器數(shù)據(jù)庫(kù)(如Oracle和SQL Server)和桌面數(shù)據(jù)庫(kù)(如Access)。OLE DB分兩種:直接的OLE DB:只要提供了Provider的數(shù)據(jù)庫(kù)都能使用。面向OD
4、BC的OLE DB:為讓那些只提供有ODBC而無(wú)Provider的數(shù)據(jù)庫(kù)也可以通過(guò)OLE DB訪(fǎng)問(wèn),MS提供了一個(gè)面向ODBC的Provider。不過(guò)因?yàn)橐?jīng)過(guò)兩層,效率會(huì)稍微降低。所以現(xiàn)在多數(shù)數(shù)據(jù)庫(kù)會(huì)提供自己的Provider。再再再后來(lái)MS說(shuō)OLE DB的接口還是太復(fù)雜了。程序員也就調(diào)調(diào)QUERY,沒(méi)必要搞這么復(fù)雜吧!于是提出了ADO。ADO其實(shí)只是一個(gè)應(yīng)用程序?qū)哟蔚慕涌?,它通過(guò)在OLE DB上封裝來(lái)簡(jiǎn)化使用方法,實(shí)現(xiàn)與數(shù)據(jù)庫(kù)通信,從而更好的解放了程序員在操作數(shù)據(jù)庫(kù)時(shí)的麻煩。ADO可處理各種OLE DB支持的數(shù)據(jù)源。新世紀(jì)到了MS也發(fā)明了.NET,為了適應(yīng)新世紀(jì)新潮流也提出了ADO.NET
5、,這部分的有待學(xué)習(xí)。不過(guò)我感覺(jué)還是在原ADO上面繼續(xù)封裝吧。-ODBC詳解:如圖所示,應(yīng)用程序通過(guò)ODBC接口訪(fǎng)問(wèn)不同數(shù)據(jù)源中的數(shù)據(jù),每個(gè)不同的數(shù)據(jù)源類(lèi)型由一個(gè)驅(qū)動(dòng)程序支持。驅(qū)動(dòng)程序管理器自動(dòng)為應(yīng)用程序裝入合適的驅(qū)動(dòng)程序,大大簡(jiǎn)化了對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn),也為程序的跨平臺(tái)開(kāi)發(fā)和移植提供了極大的方便。ODBC可對(duì)大多數(shù)類(lèi)型數(shù)據(jù)庫(kù)提供支持,包括dBase、Informix、Access、SQL Server和Oracle等,還可對(duì)一些其他類(lèi)的數(shù)據(jù)庫(kù)文件提供支持,如文本、Excel電子表格等。對(duì)于MS ODBC還不支持的一些特殊數(shù)據(jù)庫(kù),只要安裝數(shù)據(jù)庫(kù)廠(chǎng)商提供的ODBC程序,也能在程序中直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
6、由圖可知,ODBC由ODBC與應(yīng)用程序的接口、驅(qū)動(dòng)程序管理器、驅(qū)動(dòng)程序和具體的數(shù)據(jù)源(DSN)等部分組成。其中,數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序使用數(shù)據(jù)源定位和標(biāo)識(shí)具體的ODBC能兼容的數(shù)據(jù)庫(kù),而具體的數(shù)據(jù)源則需要?jiǎng)?chuàng)建。在windows系統(tǒng)中,可通過(guò)控制面板中的“ODBC數(shù)據(jù)源”管理器創(chuàng)建DSN,也可使用連接字符串如conn="DRIVER=SQL SERVER;SERVER=servername;UID=xx;PWD=xxx"創(chuàng)建臨時(shí)DSN,實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接。ODBC數(shù)據(jù)源管理器中提供三種DSN,它們的區(qū)別很簡(jiǎn)單:用戶(hù)DSN只能供創(chuàng)建該DSN的用戶(hù)在當(dāng)前機(jī)器中使用。因此ASP等
7、遠(yuǎn)程操作不能使用它。系統(tǒng)DSN允許任何有登陸權(quán)限的用戶(hù)訪(fǎng)問(wèn)。因此,供Web應(yīng)用程序訪(fǎng)問(wèn)時(shí),通常建立系統(tǒng)DSN。文件DSN和系統(tǒng)DSN的區(qū)別只在于連接信息的存放位置不同:系統(tǒng)DSN信息保存在OS注冊(cè)表中,而文件DSN則放在后綴名為dsn的一個(gè)文本文件中。因此,文件DSN的優(yōu)點(diǎn)是便于和對(duì)應(yīng)的數(shù)據(jù)庫(kù)以及應(yīng)用程序一起移植,而系統(tǒng)DSN的優(yōu)點(diǎn)則是便于修改。-在asp中的連接方法對(duì)比:使用ODBC時(shí),寫(xiě)法如下: 用系統(tǒng)DSN:connstr="DSN=DSNname; UID=xx; PWD=xxx;DATABASE=dbname" 用文件DSN:connstr=&
8、quot;FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname" 用連接字符串(不用建立DSN):conn=" Driver =SQL SERVER;SERVER=servername;UID=xx;PWD=xxx" conn="Driver=microsoft odbc for oracle;server=oramr;uid=mr;pwd=mr"conn="Driver=Microsoft Excel Driver (*.xls);DriverId=790; Dbq="+
9、server.mappath("mrdb.xls")conn="Driver=Microsoft Text Driver (*.txt; *.csv); Dbq="+server.mappath(".")+"Extensions=asc,csv,tab,txt; Persist Security Info=False"使用OLE DB時(shí),寫(xiě)法如下:conn="Provider=SQL OLE DB; Data source=servername;UID=xx;PWD=xxx;Database=dbname
10、" conn="Provider=Microsoft.jet. OLEDB.4.0; Data source =c:abcabc.mdb" 性能對(duì)比: sql
11、60; access OLE DB DSN OLE DB DSN 連接時(shí)間:
12、0; 18 82 62 99查詢(xún)1,000條記錄: 100 150
13、160;2900 5400 顯然,OLE DB鏈接方式相對(duì)于DSN有很大的優(yōu)勢(shì).購(gòu)買(mǎi)虛擬主機(jī)的小站,大多是php+mysql或者asp+access的組合,一般沒(méi)有DSN數(shù)據(jù)源的配置,而且我們也不需要.同時(shí)mssql是一種昂貴的數(shù)據(jù)庫(kù),如果使用效率低下的access,我們應(yīng)該盡量的減少數(shù)據(jù)庫(kù)引擎的壓力.我經(jīng)??匆?jiàn)一些站點(diǎn)給出提示:數(shù)據(jù)庫(kù)連接失敗,顯然,又是access出毛病了.這兩者在性能上也有一定的差別.下面是一個(gè)測(cè)試文件,對(duì)兩者進(jìn)行比較.<%dim openmode,action,
14、db,openstr,rs,connopenmode=request.QueryString("openmode")action=request.QueryString("action")db="#niceidea.mdb"set conn=server.createobject("adodb.connection")if openmode="OLE DB" then openstr="provider=microsoft.jet.OLE DB.
15、4.0;" & "data source = " & server.mappath(db)if openmode="odbc" then openstr="Driver=Microsoft Access Driver (*.mdb);DBQ=" &Server.Mappath(db) Dim strStartTimeDim
16、;strEndTimestrStartTime = Timer '開(kāi)始時(shí)間'反復(fù)打開(kāi)數(shù)據(jù)庫(kù)50次if action="open" thenfor i=1 to 50conn.open(openstr)conn.closenextset conn=nothingend if'移動(dòng)記錄集10000次if action="move" thenconn.open(openstr)set rs=conn.exec
17、ute("select * from visitor")for i=1 to 10000rs.movenextnextrs.closeset rs=nothingconn.closeset conn=nothingend if'反復(fù)打開(kāi)記錄集1000次if action="getrs" thenconn.open(openstr)set rs=server.CreateObject("adodb.recordset&q
18、uot;)dim sqlstrsqlstr="select * from visitor"for i=1 to 1000rs.open sqlstr,conn,1,1rs.closenextset rs=nothingconn.closeset conn=nothingend if%><html><head><meta http-equiv="Content-Type" content=&q
19、uot;text/html; charset=gb2312"><title>數(shù)據(jù)庫(kù)鏈接方式測(cè)試</title></head><body><ul> <li><a href="test.asp?openmode=odbc&action=open">odbc打開(kāi)數(shù)據(jù)庫(kù)50次</a></li> <li><a href="test.asp?openmode=OLE DB&
20、;action=open">OLE DB打開(kāi)數(shù)據(jù)庫(kù)50次</a></li> <li><a href="test.asp?openmode=odbc&action=move">odbc移動(dòng)記錄10000次</a></li> <li><a href="test.asp?openmode=OLE DB&action=move">OLE DB移動(dòng)記錄10000次</a></li&
21、gt; <li><a href="test.asp?openmode=odbc&action=getrs">odbc打開(kāi)記錄1000次</a></li> <li><a href="test.asp?openmode=OLE DB&action=getrs">OLE DB打開(kāi)記錄1000次</a></li> </ul><p><%' 加載完畢的時(shí)間strEndTime = TimerResponse.Write ("運(yùn)行處理時(shí)間: ")Response.Write 1000*(strEndTime - strStartTime)Response.Write (" 毫秒.")response.end%></p></body></html>得到的數(shù)據(jù)如下:odbc反復(fù)打開(kāi)數(shù)據(jù)庫(kù)50次:6062.5 毫秒.OLE DB反復(fù)打開(kāi)數(shù)據(jù)庫(kù)50次:46
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)網(wǎng)絡(luò)安全態(tài)勢(shì)感知技術(shù)安全防護(hù)與風(fēng)險(xiǎn)控制研究報(bào)告
- 【高中語(yǔ)文】第六單元綜合檢測(cè)卷+高一語(yǔ)文統(tǒng)編版必修上冊(cè)
- 2025年電商平臺(tái)大數(shù)據(jù)營(yíng)銷(xiāo)策略與金融電商精準(zhǔn)營(yíng)銷(xiāo)研究報(bào)告
- 2025年教育資源整合項(xiàng)目風(fēng)險(xiǎn)管理與民族地區(qū)社會(huì)穩(wěn)定保障研究報(bào)告
- 2025年城市供水設(shè)施建設(shè)項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估方法與實(shí)踐報(bào)告
- 2025年智能家居行業(yè)生態(tài)構(gòu)建挑戰(zhàn)與用戶(hù)滿(mǎn)意度分析報(bào)告
- 單位疫情一刀切管理制度
- 服裝企業(yè)架構(gòu)管理制度
- 服務(wù)企業(yè)投訴管理制度
- 施工工序策劃管理制度
- 第七屆全國(guó)急救技能大賽(醫(yī)生組)理論考試題庫(kù)大全-上部分
- 醫(yī)療器械運(yùn)輸管理制度范本
- 《癌痛與癌痛治療》課件
- 經(jīng)空氣傳播疾病醫(yī)院感染預(yù)防與控制規(guī)范課件
- 冠心病合并糖尿病血脂管理
- GB/T 43492-2023預(yù)制保溫球墨鑄鐵管、管件和附件
- PDCA循環(huán)在我院靜脈用藥調(diào)配中心用藥錯(cuò)誤管理中的應(yīng)用靜配中心質(zhì)量持續(xù)改進(jìn)案例
- 精神病患者攻擊行為預(yù)防
- 《議程設(shè)置理論》課件
- 二單元稅率利率復(fù)習(xí)課
- GB/Z 43281-2023即時(shí)檢驗(yàn)(POCT)設(shè)備監(jiān)督員和操作員指南
評(píng)論
0/150
提交評(píng)論