複製鏈接
請複製以下鏈接發送給好友

開放數據庫互連

鎖定
開放數據庫連接(Open Database Connectivity,ODBC)是為解決異構數據庫間的數據共享而產生的,現已成為WOSA(The Windows Open System Architecture(Windows開放系統體系結構))的主要部分和基於Windows環境的一種數據庫訪問接口標準。ODBC 為異構數據庫訪問提供統一接口,允許應用程序以SQL 為數據存取標準,存取不同DBMS管理的數據;使應用程序直接操縱DB中的數據,免除隨DB的改變而改變。用ODBC 可以訪問各類計算機上的DB文件,甚至訪問如Excel 表和ASCI I數據文件這類非數據庫對象。
中文名
開放數據庫互連
外文名
ODBC
架    構
應用程序
管理方法
單束式驅動程序
提出者
Microsoft

開放數據庫互連軟件架構

開放數據庫互連應用程序

應用程序對外提供使用者交談界面,同時對內執行資料之準備工作數據庫系統所傳回來的結果再顯示給使用者看。簡單來説,應用程序即ODBC 界面執行下列主要工作:
  1. Request a connection(i.e.session) with a data source.
  2. Send SQL requests to the data source.
  3. Define storage areas and data formats for the result of SQL requests.
  4. Request results.
  5. Process errors.
  6. Request a commit or rollback of operations for transcation control.
  7. Terminate a connection a data source.

開放數據庫互連驅動管理器

驅動管理器本身是MS Windows中一個動態連接鏈接庫文件(ODBC.DLL)。應用程序透過驅動管理器去加載並連接數據源的驅動程序(driver)並連接數據源。驅動管理器主要工作如下:
1. Uses ODBC INI file to map a data source name to a specific driver DLL.
2. Processes server ODBC initialization calls.
3. Provides entry points to ODBC functions for each driver.
4. Provides parameter validation and sequence validation for ODBC calls.

開放數據庫互連驅動程序

驅動程序也是一個動態連接鏈接庫文件,當應用程序呼叫ODBC函數,SQLConnect 或SQLDriverConnect時,驅動管理器就會加載相對的驅動程序與應用程序呼應。驅動程序主要是執行ODBC之相對函數,並與對應的數據源(Data Source)做溝通。驅動程序之工作如下:
1. Establishes a connect to a data source.
2. Submits requests to a data sources.
3. Translates data to or from other formats,if requested by the application.
4. Return results to the application.
5. Formats errors into standard error codes and returns them to the application.
6. Declares and manipulates cursors if necessary (invisible to the application).
7. Initiates transactions if the data source requires explicit transaction initiation(invisible to the app).

開放數據庫互連數據源

數據源唯一數據庫系統(DBMS)或是數據庫操作系統的一個組合。舉例來説,應用庫系統可以同時與下列兩個或其中一個數據源連接。
1. A DBMaker DBMS running on a Microsoft Windows NT accessed by NTaccessed by TCP/IP.
2. A Tandem NonStop SQL DBMS running on the Guardian 90 accessed via a gateway.
應用系統程序通過標準API來連接數據源,因此開發過程中不需指定特定的數據庫系統,所以數據庫系統的開放性從此被建立。筆者認為在計算機系統進入開放時代之時,我們應可體會到標準的建立與系統的發展是同樣的重要。而信息系統架構在數據庫的必要性也隨着信息化社會的蓬勃發展而更顯重要,因此在ODBC標準日益成熟的同時,我們也同時可以感受到數據庫系統在開放架構下,更需扮演強而有力的角色。
依據 ODBC 的規格,其API共可分為以下九類:
1. SQLAllocEnv.
2. SQLAllocConnect.
3. SQLConnect.
4. SQLPriverConnect.
5. SQLBrowseConnect.
1. SQLDataSource.
2. SQLGetInfo.
3. SQLGetFunctions.
4. SQLGetTypeInfo.
1. SQLSetConnectOption.
IV. 準備SQL指令之需求
1. SQLAllocStmt. 2. SQLPrepare. 3. SQLSetParam. 4. SQLParamOptions. 5. SQLGetCursorName. 6.SQLSetCursorName. 7. SQLSetScrollOptions.
1. SQLExecute. 2. SQLExecDirect. 3. SQLNativeSql. 4. SQLDescribeParanl. 5. SQLNumParams. 6.SQLParamData. 7. SQLPutData.
VI. 取得執行結果及有關結果的訊息
1. SQLRowCount. 2. SQLNumResultCols. 3. SQLDescribeCol. 4. SQLColAttributes. 5. SQLBindCol. 6.SQLFetch. 7. SQLExtendedFetch. 8. SQLGetData. 9. SQLSetDos. 10. SQLMoreResults. 11. SQLError.
VII. 取得有關數據源系統回錄(System tables or Catalog)的訊息
ODBC程序流程 ODBC程序流程
1. SQLColumnPrivileges. 2. SQLColumns. 3. SQLForeignkeys. 4. SQLPrimaryKeys. 5.SQLProcedureColumns. 6. SQLProcedures. 7. SQLSpecialColumns. 8. SQLStatistics. 9. SQLTablePrivileges. 10. SQLTables.
VIII. 結束 SQL 指令需求
1. SQLFreeStmt. 2. SQLCancel. 3. SQLTransact.
IX. 結束與數據源的連接
1. SQLDisconnect. 2. SQLFreeConnect. 3. SQLFreeEnv.
以上所列之 ODBC API函數,我們發現全都以 SQL 為開頭。除以上述分類外,各個函數在其必要性或複雜度上, 更被規定在不同的幾個層級中 ODBC 函數的層級為核心層(Core level),第一層(Level 1),和第二層(Level 2)。我們再來看一個很基本的應用程序步驟是如何呢?
回顧 ODBC 的架構及其執行過程,ODBC 造就了"應用程序獨立性(Application Independency)"的特性,使應用程序不需在乎數據源是何種數據庫系統或者純粹是個資料或文本文件,只要相對驅動程序能完成銜接的功能,則應用程序即可達到高度的獨立性。

開放數據庫互連系統更新

ODBC現在看來是一個比較古老的東西,在1996年左右就比較定型了,其最新的版本是 3.8(Win7 自帶;Win8 上有更新但仍叫 3.8),MICROSOFT也不打算對它做什麼大的更新,更多的目光應該被放到OLEDB、.NET DATA PROVIDER身上了。然而,正因為它是一個比較成熟和古老的規範,ODBC在大多數DBMS上都可以使用,可以説一個像樣的DBMS都應該支持ODBC 3.0或以上的版本。
如果你打算學習如何開發一個ODBC DRIVER,最好的參考資料還是MSDN。如果你不打算採用ODBC API做開發,學習和了解ODBC也可以增加對DBMS的瞭解,也能更好地理解其他的數據庫訪問接口和技術。
一個基於ODBC的應用程序對數據庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數據庫操作由對應的DBMS的ODBC驅動程序完成。也就是説,不論是FoxPro、Access還是Oracle數據庫,均可用ODBCAPI進行訪問。由此可見,ODBC的最大優點是能以統一的方式處理所有的數據庫。
開放數據庫互連(ODBC)是Microsoft引進的一種早期數據庫接口技術。它實際上是我們要在本章後面加以討論的ADO的前身。Microsoft引進這種技術的一個主要原因是,以非語言專用的方式,提供給程序員一種訪問數據庫內容的簡單方法。換句話説,訪問DBF文件或Access Basic以得到MDB文件中的數據時,無需懂得Xbase程序設計語言。事實上,Visual C++就是這樣一個程序設計平台,即Microsoft最初是以ODBC為目標的。
你會發現,ODBC工作起來和Windows一樣,它用包含在DLL內的驅動程序完成任務。其實,ODBC提供一套兩個驅動程序:一個是數據庫管理器的語言,另一個為程序設計語言提供公用接口。允許Visual C++用標準的函數調用經公用接口訪問數據庫的內容,是這兩個驅動程序的匯合點。當然,還有其它和ODBC有關的實用程序類型的DLL。例如,一個這樣的DLL允許你管理ODBC數據源。ODBC的實際管理接口出現在SYSTEM文件夾中的某個CPL(控制面板)文件中尋找我們在後面要談到這方面的問題。ODBC的確能履行承諾,提供對數據庫內容的訪問,並且沒有太多的問題。它沒有提供數據庫管理器和C之間儘可能最好的數據轉換,這種情況是有的,但它多半能像廣告所説的那樣去工作。唯一影響ODBC前程的是,它的速度極低至少較早版本的產品是這樣。ODBC最初面世時,一些開發者曾説,因為速度問題,ODBC永遠也不會在數據庫領域產生太大的影響。然而,以Microsoft的市場影響力,ODBC毫無疑問是成功了。今天,只要有兩種ODBC驅動程序的一種,那麼幾乎每一個數據庫管理器的表現都會很卓越。

開放數據庫互連使用方式

ODBC ODBC
在可以用ODBC做任何事之前,必須有一個數據庫模型在腦子裏。在一個像Access這樣的應用程序中創建數據庫框架通常會更容易一些,因為Access可以非常輕鬆地提供完成任務所需的各種功能。但是,如果你安裝了所需的ODBC驅動程序,那就可以在C++中創建程序框架。一設計了數據庫,就要為其創建ODBC數據源,我們會在本節中看到這一點。下面的過程並沒有嚴格地説明活動的經過,只是説明了一種配置數據源的技術。
註釋 我會在第5章中説明如何創建一個Access數據庫。現在,我們只是看一看,為了訪問那個數據庫,我們下一步要做些什麼。
圖1 ODBC 圖1 ODBC
2. 單擊Add按鈕。會看到Create New Data Source(創建新的數據源)對話框,如圖1所示。技巧 檢查ODBC Data Source Administrator(ODBC數據源管理員)對話框的About選項卡,可以確定你正在使用的ODBC驅動程序的最新版本。這個選項卡包含了各種ODBC DLL的版本號、生產廠商的名稱以及出現在SYSTEM文件夾中的文件名。大多數情況下,通過查看版本號可以驗證ODBC驅動程序是否是最新的版本。
ODBC ODBC
3. 選擇一個數據源。對本練習來説,我選擇了Access數據源。單擊Finish(完成),會看到某種類型的配置對話框,如下面的ODBC Microsoft Access 97Setup(設置)對話框所示。註釋:如果你選擇的數據源和我在本實例中選擇的不同,那麼所需的配置步驟也和這裏説明的不同。每個ODBC驅動程序都要求不同類型的配置。
4. 在Data Source Name(數據源名)域內輸入數據源名稱。一定要選擇意義明確但又不過於冗長的名稱。我選擇Food Database(食品數據庫),因為我最終要創建一個與食品庫存有關的數據庫的鏈接。
5. 在Description(描述)域內輸入一段説明性文字。可以讓這個項比上一個項稍長一些,因為它描述數據庫的用途。另一方面,也不要寫入像《戰爭與和平》那樣大的小説。對本練習,我輸入了:This database contains inventoryinformation for a food store(本數據庫包含食品存儲的庫存信息)。
ODBC ODBC
6. 單擊Select(選擇)按鈕。你會看到一個File Open-type(文件打開類型)對話框,可以在那裏選擇一個現有的數據庫。ODBC驅動程序會自動選擇正確的文件擴展名。
技巧 並不是一定要提前設計數據庫。請注意,Access ODBC驅動程序還包括一個創建新數據庫的按鈕。很多ODBC驅動程序都提供了這種功能,但並不是全都這樣。單擊這個按鈕會啓動數據庫管理器應用程序,並允許你設計數據庫。注意有一點很有意思,Access ODBC驅動程序還會允許你使用這個對話框壓縮或修補數據庫。
7. 選擇系統數據庫選項。在大多數情況下要選擇None(無),除非你為應用程序特別創建了一個系統數據庫。如果確實添加了系統數據庫,它會出現在ODBC Microsoft Access 97 Setup(設置)對話框的System DSN(系統DSN)選項卡上。
圖2 ODBC 圖2 ODBC
8. 單擊Advanced(高級)按鈕,會看到Set Advanced Options(設置高級選項)對話框,如圖2所示。無需對很多項做修改。但是,要把客户名添加到LoginName(註冊名)域中,把客户口令添加到Password(口令)域中。這允許客户在訪問你的數據庫時,根本不用瞭解訪問的細節——甚至不用瞭解被記錄的客户名。技巧 為最優化潛在的區域,可以瀏覽一下ODBC驅動程序提供的一系列高級選項。例如,Access ODBC允許你更改DBMS所用的線程數量。缺省設置3通常提供了不錯的性能,但是你會發現,複雜程序中線程多一些的話,可以提高前台任務的速度。由於Windows使用了一些處理器循環對線程實施管理,所以使用了過多的線程又會降低應用程序的速度。
9. 設置完所需的高級選項後單擊OK。
10. 再次單擊OK關閉ODBC Microsoft Access 97 Setup(設置)對話框。應該看到,新的設置項已經添加到ODBC Data Source Administrator(ODBC數據源管理員)對話框中。如果今後要為數據庫更改這些設置,只要簡單地加亮它並單擊Configure(配置)。刪除數據庫配置也很容易,只要加亮DSN並單擊Remove(刪除)即可。創建系統DSN和製作用户DSN差不多。兩者間一個顯著的差別是,使用它們的目的不同。系統DSN告訴應用程序如何與數據庫相連,在一些情況下如何與之交互作用。系統DSN不包含數據庫所需的任何數據——它包含連接標準,其中可以包括從用户列表到重要文件位置的一切信息。

開放數據庫互連程序種類

管理方法
ODBC 分為單束式和多束式兩類
ODBC 使用層次的方法來管理數據庫,在數據庫通信結構的每一層,對可能出現依賴數據庫產品自身特性的地方,ODBC 都引入一個公共接口以解決潛在的不一致性,從而很好地解決了基於數據庫系統應用程序的相對獨立性,這也是ODBC 一經推出就獲得巨大成功的重要原因之一。
從結構上分,ODBC 分為單束式和多束式兩類。
單束式驅動程序
單束式驅動程序介於應用程序和數據庫之間,像中介驅動程序一樣數據提供一個統一的數據訪問方式。當用户進行數據庫操作時,應用程序傳遞一個ODBC 函數調用給ODBC 驅動程序管理器,由ODBC API 判斷該調用是由它直接處理並將結果返回還是送交驅動程序執行並將結果返回。由上可見,單束式驅動程序本身是一個數據庫引擎,由它直接可完成對數據庫的操作,儘管該數據庫可能位於網絡的任何地方。
多束式驅動程序
多束式驅動程序負責在數據庫引擎和客户應用程序之間傳送命令和數據,它本身並不執行數據處理操作而用於遠程操作的網絡通信協議的一個界面。
前端應用程序提出對數據庫處理的請求,該請求轉給ODBC 驅動程序管理器,驅動程序管理器依據請求的情況,就地完成或傳給多束驅動程序,多束式驅動程序將請求翻譯為特定廠家的數據庫通信接口(如Oracle 的SQLNet)所能理解的形式並交於接口去處理,接口把請求經網絡傳送給服務器上的數據引擎,服務器處理完後把結果發回給數據庫通信接口,數據庫接口將結果傳給多束式ODBC 驅動程序,再由驅動程序將結果傳給應用程序。

開放數據庫互連文件DSN

ODBC ODBC
你可能已經注意到了,上一節中的實例有問題。如果想單獨配置網絡上的每一台機器,它會工作得很好,但這可能不是一個好主意。還有一種存儲創建數據源所需信息的方式:文件DSN。這正是我們要在本節中討論的。下面的過程説明了設置文件DSN的一般方法。
圖3 ODBC 圖3 ODBC
1. 雙擊Control Panel(控制面板)中的32位ODBC小程序,會看到ODBCData Source Administrator(ODBC數據源管理員)對話框。選擇File DSN(文件DSN)選項卡,會看到如圖3所示的對話框。要做的第一件事是,選擇存儲DSN信息的地方。2. 單擊Look In(觀察)下拉列表框,會看到一系列當前機器的目錄和驅動器。可以為DSN使用任何存儲位置。我通常在網絡上選擇數據庫存儲目錄。使用UNC(通用命名標準)意味着,每個人都會用相同的路徑來訪問DSN文件。
技巧 Up One Level上一和在Explorer中是一樣的。可以用該按鈕返回到上一級目錄。最後,你會在My Computer(我的電腦)處結束,看到機器上所有驅動器的清單。
圖4 ODBC 圖4 ODBC
3. 單擊Add(添加),會看到Create New Data Source(創建新的數據源)對話框。
圖5 ODBC 圖5 ODBC
4. 在列表中選擇一個ODBC驅動程序,然後單擊Next(下一個)。對本示例來説,我再次選擇Access。你會看到Create New Data Source(創建新的數據源)對話框的下一頁顯示出來。在這裏選擇數據源的名稱和存儲位置。單擊Browse(瀏覽)會看到File Open-type(文件打開類型)對話框,在這裏選擇存儲位置。輸入一個文件名,ODBC嚮導自動添加DSN作為擴展名。在本示例中,我選擇SAMPLE.DSN作為DSN文件的名稱。5. 單擊Next(下一個)會看到一個摘要對話框,如圖4所示。它説明正準備創建的DSN的參數。6. 單擊Finish(完成)。這時,會看到ODBC Microsoft Access 97 Setup(設置)對話框的修改版。不能像我們在上一節所做的那樣,在Data Source Name(數據源名)或Description(描述)字段中添加信息了,不過,其它的都和以前一樣。7. 一定要單擊Select(選擇)按鈕輸入數據庫的名稱,然後選擇想要使用的數據庫(如果想創建一個新數據庫,也可以單擊Create(創建))。
ODBC ODBC
8. 完成配置過程時單擊OK,你會在ODBC Data Source Administrator(ODBC數據源管理員)對話框中看到一個新的DSN文件項。和我們創建的前一個DSN不同,這個DSN實際上創建可以用文本編輯器來查看和編輯的文件。圖5顯示了我的文件的外觀。請注意,它符合標準的INI文件格式。你可以在頂端看到【ODBC】標題。下面是我選擇的全部設置。這個文件允許我從Visual C++選擇數據源,而機器間的傳輸也是非常容易的。我甚至能在安裝過程中按要求更改位置——在你不知道用户會有什麼樣的設置時,這一點確實很不錯。

開放數據庫互連同名圖書

開放數據庫互連圖書一

開放數據庫互聯(ODBC)技術與應用 開放數據庫互聯(ODBC)技術與應用
基本信息
開放數據庫互聯(ODBC)技術與應用
作者:文必龍
ISBN:9787030055888
出版社:科學出版社
出版時間:1997
主題:數據庫管理系統--接口
內容簡介
開放數據庫互聯(ODBC)為數據庫應用程序訪問異構型數據庫提供了統一的數據存取API,應用程序不必重新編譯、連接就可以與不同的DBMS相聯。目前支持ODBC的有Oracle,Access,X-Base等10多種流行的DBMS。本書介紹了ODBC的基本原理及SQL語言,並從兩個角度介紹ODBC技術:一是從ODBC應用程序設計者的角度,將應用和開發中通常要用到的編程環節先總結成框架形式,然後分步驟講解;另一是從ODBC驅動程序開發人員的角度,介紹如何開發ODBC驅動程序。本書還介紹了有關ODBC軟件安裝及數據源配置的方法。本書適用於廣大數據庫應用人員和開發人員,也可供大、中專院校師生參考。

開放數據庫互連圖書二

書名:開放數據庫互連
作者:( 美)Que Corporation著
ISBN號:7-302-02035-3
價格: 40.00
出版地:北京
出版時間:1995.11
頁數:355 頁
開本:16開
附註 :北京科海培訓中心
本書原文名:Using ODBC 2
其他版本 :Using ODBC 2
主題 :關係數據庫 -- 應用程序
科圖分類號 :73.967
責任者:Que Corporation 著
孟小峯譯

開放數據庫互連記錄事務

調試應用程序時加以記錄,這一點很重要。ODBC Data Source Administrator(ODBC數據源管理員)對話框也提供了這樣的功能。可以選擇跟蹤你通過ODBC對數據庫進行的各種事務。當然,這些記錄可能會變得相當大,但我們並不是總要使用它們。
圖6 ODBC 圖6 ODBC
開始記錄事務時,只要雙擊控制面板(Control Panel)中的32位ODBC小程序,打開ODBC Data Source Administrator(ODBC數據源管理員)對話框。選擇Tracing(跟蹤)選項卡,你會看到如圖6所示的對話框(請注意,該對話框的Windows 98版本略有不同)。如你所見,有三個單選按鈕確定何時跟蹤ODBC調用。缺省設置是Don'tTrace(不跟蹤)。如果打算調試單個應用程序,應該選擇All the Time(全部時間)。One-Time Only(只一次)在下一次連接期間跟蹤ODBC調用棗只要連接一拆除,跟蹤就關閉。當用户帶着特定的問題調用時,這是一個不錯的選擇。可以監視一次會話期間的連接,然後用該信息幫助創建排除錯誤的計劃。
跟蹤不會自動開始。還要單擊對話框右側的Start Tracing Now(現在開始跟蹤)。只要跟蹤一開始,按鈕標題就變成Stop Tracing Now(現在停止跟蹤)。再次單擊按鈕關閉跟蹤過程。
唯一要擔心的其它設置是Log File Path(記錄文件路徑)。ODBC通常在根目錄下的SQL.LOG文件中放入事務信息。但是,也可以將該信息放在網絡驅動器上,或者用户看不到的地方。在調試過程中,缺省位置通常就比較適宜。
註釋 除非你想創建自己的日誌記錄DLL,否則不要更改Custom Trace DLL(自定義跟蹤DLL)域內的設置。在這裏列出的DLL表,ODBCTRAC.DLL負責維持事務記錄。