一直很忙,雖然不知道在忙些什麼。也有些煩心的事兒。但工作還是要做的,即使是為了給自己乙個交代。資料庫訪問介面這些東西很煩,但有些東西無論你怎麼努力都是繞不過去的,最終還是要回來。就像中國從制度上跳過了資本主義社會一樣,還不是得回來補經濟課!用了差不多3天左右的時間,查了60頁左右的資料,總算大體上理清了一些眉目。
odbc:開放式資料庫互連(open database connectivity),是微軟公司推出的一種實現應用程式和關聯式資料庫之間通訊的方法標準,是乙個介面標準。所以它實際上是一種標準,符合標準的資料庫就可以通過sql語言編寫的命令對資料庫進行操作,但只能針對關聯式資料庫進行操作(如sql server,oracle,access,excel等),目前所有的關聯式資料庫都符合該標準。odbc本質上是一組資料庫訪問api(應用程式程式設計介面),由一組函式呼叫組成,核心是sql語句。
乙個基於odbc的應用程式對資料庫進行操作時,使用者直接將sql語句傳送給odbc,同時odbc對資料庫的操作也不依賴任何dbms,不直接與dbms打交道,它將所有的資料庫操作由對應的dbms的odbc驅動程式完成,由對應dbms的odbc驅動程式對dbms進行操作。也就是說,不論是foxpro、access還是oracle資料庫,均可用odbc api進行訪問。由此可見,odbc的最大優點是能以統一的方式處理所有的關聯式資料庫。 具體見圖1所示。
圖1 odbc元件圖
在具體操作時,首先必須用odbc管理器註冊乙個資料來源,管理器根據資料來源提供的資料庫位置、資料庫型別及odbc驅動程式等資訊,建立起odbc與具體資料庫的聯絡。這樣,只要應用程式將資料來源名提供給odbc,odbc就能建立起與相應資料庫的連線。
不過直接使用odbc api比較麻煩,所以微軟後來又發展出來dao、rdo、ado這些資料庫介面,使用這些資料庫介面開發程式更容易。這些介面都支援odbc,所以即使你所訪問的資料庫沒有提供ado的驅動,只要有odbc驅動一樣可以使用ado進行訪問。但由圖2可以看出,odbc實際上是一種相當底層的訪問技術,因此它可以從底層設定和控制資料庫,完成一些高階資料庫技術無法完成的功能。
圖2 odbc網路結構圖
dao:資料庫訪問物件(database access object),所謂資料訪問物件,顧名思義就是與資料庫打交道,夾在業務邏輯層與資料資源層之間。是microsoft一種用來訪問jet引擎的方法,主要適用於單系統應用程式或在小範圍本地分布使用,訪問所謂桌面資料庫(如access、foxpro、dbase等)。dao在設計時是專門用來處理mdb資料庫的,由於其內部已經對jet資料庫的訪問進行了加速優化,因此訪問access資料庫時效能很好,也很方便,所以如果資料庫是access資料庫且是本地使用的話,建議使用這種訪問方式。它也可以通過odbc訪問遠端資料庫,但效率較低,一般不採用這種方式。它是第乙個物件導向的資料庫訪問介面。dao可以訪問非關係型資料庫。dao的網路結構圖和物件層次圖分別如圖3和圖4所示。
圖3 dao網路結構圖
rdo:遠端資料庫物件(remote database object)。為了彌補dao訪問遠端資料庫能力的不足,微軟推出了rdo資料庫訪問介面,可以方便的用來訪問遠端資料庫(網路資料庫)。它封裝了odbc api的物件層,因此在訪問odbc相容資料庫時,具有比dao更高的效能,而且比odbc更易用。但同樣由於這種和odbc緊密的結合,使得它只能以odbc的方式訪問關係型資料庫,同時也在訪問jet或isam資料庫方面受到限制,而且無法訪問非關係型資料庫(?)。rdo提供了訪問儲存過程和複雜結果集的更多和更複雜的物件、屬性以及方法,但它只是從dao向ado邁進的乙個過度產品,在大多數情況下,ado的效能都要優於它。rdo的網路結構圖和物件層次圖如圖5和圖6所示。
圖5 rdo網路結構圖
圖6 rdo物件層次圖
ole db:資料庫鏈結和嵌入物件(object linking and embedding database)。ole db是微軟提出的基於com思想且物件導向的一種技術標準,目的是提供一種統一的資料訪問介面訪問各種資料來源,這裡所說的"資料"除了標準的關係型資料庫中的資料之外,還包括郵件資料、web上的文字或圖形、目錄服務(directory services)、以及主機系統中的檔案和地理資料以及自定義業務物件等。ole db標準的核心內容就是要求對以上這些各種各樣的資料儲存(data store)都提供一種相同的訪問介面,使得資料的使用者(應用程式)可以使用同樣的方法訪問各種資料,而不用考慮資料的具體儲存地點、格式或型別。
ole db 標準的具體實現是通過一組c++ api 函式, 就像odbc 標準中的odbc api 一樣, 不同之處只是在於ole db 的api 是符合com 標準、 基於物件的。由於ole db可以訪問各種型別的資料來源,包括關係型資料庫,所以說,符合odbc 標準的資料來源是符合ole db標準的資料來源的子集。但是符合odbc的資料來源要能夠被ole db訪問,符合ole db標準,還必須提供相應的ole db服務提供程式,就像sql server要符合odbc標準,必須提供sql server odbc驅動程式一樣。實際上,微軟已經為所有的odbc資料來源提供了乙個統一的ole db服務程式,叫做microsoft ole db provider for odbc drivers。這個東西允許你通過ole-db或ado 訪問odbc提供的所有功能。換言之,odbc和oledb這兩種技術是互補的,不能完全互相替換。但在訪問sql server資料庫時,不通過odbc驅動,而是通過乙個專門的ole db provider for sql server直接呼叫,具體參見圖7(?)。對於非關係型資料來源,只要它提供相應的ole db訪問介面,就可以同其他關係型資料來源一樣進行操作。
odbc ole db provider發布之後,有人又擔心odbc provider是不是在odbc之上的新的層次?如果是,那麼使用ole db訪問odbc資料來源是否將影響效能?答案也是否定的。實際上,odbc provider的作用是替換odbc driver manager,作為應用程式與odbc驅動程式之間的橋梁,理論上不會增加任何開銷。具體參見圖1所示。
轉 常用資料庫訪問介面介紹(一)
來自 http yuantaolzu.blog.sohu.com 80762184.html odbc 開放式資料庫互連 open database connectivity 是微軟公司推出的一種實現應用程式和關聯式資料庫之間通訊的方法標準,是乙個介面標準。所以它實際上是一種標準,符合標準的資料庫就...
Python中常用資料庫訪問介面模組
引用 python 資料庫介面模組 swordsp 2007 01 16 13 36 01 目錄專用資料庫連線模組 mysql sqlite postgresql oracle ibm db2 sap db infomix interbase ingres sybase sql server thi...
IFX資料庫訪問介紹
ifix是一款使用很廣的工業上位組態軟體,其中最有特色的就是它的實時資料庫。ifix中的資料庫分為實時資料庫和歷史資料庫。ifix為外部系統對資料庫的訪問提供了odbc介面,在安裝完ifix後,通過系統管理工具中資料來源管理程式可以看到ifix的dsn名稱 fix dynamics historic...