




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、史前那時候每個數(shù)據(jù)庫供應(yīng)商(其實也沒幾個)都有自己的數(shù)據(jù)庫操作API,每個數(shù)據(jù)庫的調(diào)用函數(shù)、操作語句各不相同。因此,每個應(yīng)用程序只能使用一個固定的數(shù)據(jù)庫,想換數(shù)據(jù)庫?沒門!你要全部重寫應(yīng)用程序中的數(shù)據(jù)庫操作代碼。后來國際標準化組織ISO- International Organization for Standardization、IBM等說不行,這么亂,程序員怎么活??!于是提出了CLI(Call-Level Interface)。每個數(shù)據(jù)庫的CLI(驅(qū)動程序)基本上相同,程序員總算好過點了??墒且獡Q數(shù)據(jù)庫,你寫的程序需要重新編譯或安裝。再后來MS的ODBC(Open DataDase Con
2、nectivity,開放數(shù)據(jù)庫互連)來了,并一度成為數(shù)據(jù)庫通信的標準。ODBC它將所有對數(shù)據(jù)庫的底層操作(即CLI)全部隱藏在ODBC的驅(qū)動程序內(nèi)核里。使用時,ODBC會動態(tài)裝載各個數(shù)據(jù)庫的CLI,把函數(shù)調(diào)用轉(zhuǎn)換成對每個數(shù)據(jù)庫的CLI調(diào)用。此時,數(shù)據(jù)庫應(yīng)用程序總算和數(shù)據(jù)庫供應(yīng)商沒什么關(guān)系了。(圖形ODBC)再再后來在一切“對象化”的趨勢下, MS提出了OLE DB(Object Linking and Embedding DB,對象連接和嵌入(法)數(shù)據(jù)庫),并打算用它取代ODBC。OLE DB也需要每個數(shù)據(jù)庫提供一個CLI(現(xiàn)在叫Provider)。OLE DB標準的核心內(nèi)容就是要求各種數(shù)據(jù)存
3、儲都提供一種相同的訪問接口。這種接口封裝了各種數(shù)據(jù)系統(tǒng)的訪問操作,使數(shù)據(jù)的使用者(應(yīng)用程序)可以使用同樣的方法訪問各種數(shù)據(jù),而不用考慮數(shù)據(jù)的具體存儲地點、格式或類型。因此,OLE DB標準實際上是規(guī)定了數(shù)據(jù)使用者和提供者之間的一種應(yīng)用層的協(xié)議(Application-Level protocol)。它可以訪問的數(shù)據(jù)包括標準的關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),還包括郵件數(shù)據(jù)、Web上的文本或圖形、目錄服務(wù),以及主機數(shù)據(jù)庫(如DB2)、服務(wù)器數(shù)據(jù)庫(如Oracle和SQL Server)和桌面數(shù)據(jù)庫(如Access)。OLE DB分兩種:直接的OLE DB:只要提供了Provider的數(shù)據(jù)庫都能使用。面向OD
4、BC的OLE DB:為讓那些只提供有ODBC而無Provider的數(shù)據(jù)庫也可以通過OLE DB訪問,MS提供了一個面向ODBC的Provider。不過因為要經(jīng)過兩層,效率會稍微降低。所以現(xiàn)在多數(shù)數(shù)據(jù)庫會提供自己的Provider。再再再后來MS說OLE DB的接口還是太復(fù)雜了。程序員也就調(diào)調(diào)QUERY,沒必要搞這么復(fù)雜吧!于是提出了ADO。ADO其實只是一個應(yīng)用程序?qū)哟蔚慕涌?,它通過在OLE DB上封裝來簡化使用方法,實現(xiàn)與數(shù)據(jù)庫通信,從而更好的解放了程序員在操作數(shù)據(jù)庫時的麻煩。ADO可處理各種OLE DB支持的數(shù)據(jù)源。新世紀到了MS也發(fā)明了.NET,為了適應(yīng)新世紀新潮流也提出了ADO.NET
5、,這部分的有待學(xué)習(xí)。不過我感覺還是在原ADO上面繼續(xù)封裝吧。-ODBC詳解:如圖所示,應(yīng)用程序通過ODBC接口訪問不同數(shù)據(jù)源中的數(shù)據(jù),每個不同的數(shù)據(jù)源類型由一個驅(qū)動程序支持。驅(qū)動程序管理器自動為應(yīng)用程序裝入合適的驅(qū)動程序,大大簡化了對數(shù)據(jù)庫的訪問,也為程序的跨平臺開發(fā)和移植提供了極大的方便。ODBC可對大多數(shù)類型數(shù)據(jù)庫提供支持,包括dBase、Informix、Access、SQL Server和Oracle等,還可對一些其他類的數(shù)據(jù)庫文件提供支持,如文本、Excel電子表格等。對于MS ODBC還不支持的一些特殊數(shù)據(jù)庫,只要安裝數(shù)據(jù)庫廠商提供的ODBC程序,也能在程序中直接對數(shù)據(jù)庫進行操作。
6、由圖可知,ODBC由ODBC與應(yīng)用程序的接口、驅(qū)動程序管理器、驅(qū)動程序和具體的數(shù)據(jù)源(DSN)等部分組成。其中,數(shù)據(jù)庫驅(qū)動程序使用數(shù)據(jù)源定位和標識具體的ODBC能兼容的數(shù)據(jù)庫,而具體的數(shù)據(jù)源則需要創(chuàng)建。在windows系統(tǒng)中,可通過控制面板中的“ODBC數(shù)據(jù)源”管理器創(chuàng)建DSN,也可使用連接字符串如conn="DRIVER=SQL SERVER;SERVER=servername;UID=xx;PWD=xxx"創(chuàng)建臨時DSN,實現(xiàn)與數(shù)據(jù)庫的連接。ODBC數(shù)據(jù)源管理器中提供三種DSN,它們的區(qū)別很簡單:用戶DSN只能供創(chuàng)建該DSN的用戶在當前機器中使用。因此ASP等
7、遠程操作不能使用它。系統(tǒng)DSN允許任何有登陸權(quán)限的用戶訪問。因此,供Web應(yīng)用程序訪問時,通常建立系統(tǒng)DSN。文件DSN和系統(tǒng)DSN的區(qū)別只在于連接信息的存放位置不同:系統(tǒng)DSN信息保存在OS注冊表中,而文件DSN則放在后綴名為dsn的一個文本文件中。因此,文件DSN的優(yōu)點是便于和對應(yīng)的數(shù)據(jù)庫以及應(yīng)用程序一起移植,而系統(tǒng)DSN的優(yōu)點則是便于修改。-在asp中的連接方法對比:使用ODBC時,寫法如下: 用系統(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時,寫法如下: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" 性能對比: sql
11、60; access OLE DB DSN OLE DB DSN 連接時間:
12、0; 18 82 62 99查詢1,000條記錄: 100 150
13、160;2900 5400 顯然,OLE DB鏈接方式相對于DSN有很大的優(yōu)勢.購買虛擬主機的小站,大多是php+mysql或者asp+access的組合,一般沒有DSN數(shù)據(jù)源的配置,而且我們也不需要.同時mssql是一種昂貴的數(shù)據(jù)庫,如果使用效率低下的access,我們應(yīng)該盡量的減少數(shù)據(jù)庫引擎的壓力.我經(jīng)??匆娨恍┱军c給出提示:數(shù)據(jù)庫連接失敗,顯然,又是access出毛病了.這兩者在性能上也有一定的差別.下面是一個測試文件,對兩者進行比較.<%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 '開始時間'反復(fù)打開數(shù)據(jù)庫50次if action="open" thenfor i=1 to 50conn.open(openstr)conn.closenextset conn=nothingend if'移動記錄集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ù)打開記錄集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ù)庫鏈接方式測試</title></head><body><ul> <li><a href="test.asp?openmode=odbc&action=open">odbc打開數(shù)據(jù)庫50次</a></li> <li><a href="test.asp?openmode=OLE DB&
20、;action=open">OLE DB打開數(shù)據(jù)庫50次</a></li> <li><a href="test.asp?openmode=odbc&action=move">odbc移動記錄10000次</a></li> <li><a href="test.asp?openmode=OLE DB&action=move">OLE DB移動記錄10000次</a></li&
21、gt; <li><a href="test.asp?openmode=odbc&action=getrs">odbc打開記錄1000次</a></li> <li><a href="test.asp?openmode=OLE DB&action=getrs">OLE DB打開記錄1000次</a></li> </ul><p><%' 加載完畢的時間strEndTime = TimerResponse.Write ("運行處理時間: ")Response.Write 1000*(strEndTime - strStartTime)Response.Write (" 毫秒.")response.end%></p></body></html>得到的數(shù)據(jù)如下:odbc反復(fù)打開數(shù)據(jù)庫50次:6062.5 毫秒.OLE DB反復(fù)打開數(shù)據(jù)庫50次:46
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國黑白高線攝像機市場分析及競爭策略研究報告
- 2025至2030年中國銅箔網(wǎng)市場分析及競爭策略研究報告
- 2025至2030年中國輸送機護欄市場分析及競爭策略研究報告
- 2025至2030年中國苧麻服裝市場分析及競爭策略研究報告
- 2025至2030年中國組合電磁茶盤市場分析及競爭策略研究報告
- 2025至2030年中國石材幕墻市場分析及競爭策略研究報告
- 2025至2030年中國漂白印細斑馬紋短毛絨市場分析及競爭策略研究報告
- 2025至2030年中國水轉(zhuǎn)移貼花市場分析及競爭策略研究報告
- 2025至2030年中國木藝燈飾配件市場分析及競爭策略研究報告
- 2025至2030年中國推車式內(nèi)窺鏡顯像儀市場分析及競爭策略研究報告
- 大學(xué)生戀愛心理及愛的能力的培養(yǎng)
- 2024年陜西西安市第一社會福利院西安市救助管理站招聘34人歷年高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 生態(tài)環(huán)境保護與可持續(xù)發(fā)展智慧樹知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- MH-T 5003-2016 民用運輸機場航站樓離港系統(tǒng)工程設(shè)計規(guī)范
- 專題24 生物的進化-備戰(zhàn)2024年中考《生物》復(fù)習(xí)全考點
- 實訓(xùn)實驗室安全準入管理制度
- 中醫(yī)治療失眠課件
- 初中英語時間表達法省公開課金獎全國賽課一等獎微課獲獎?wù)n件
- 《家庭氧療》課件
- 醫(yī)療器械運輸管理制度范本
- 《項目回款管理》課件
評論
0/150
提交評論