通用ODBC API應用結構概述

2021-04-01 09:39:24 字數 2183 閱讀 4462

無論在visual c++或visual basic中,我們開發資料庫應用程式,都可以通過使用odbc api直接呼叫sql命令來處理資料庫的資料(當然,在此之前必須通過「控制面板」中的「odbc資料來源」,建立與資料庫的連線)。

odbc api是由一組函式呼叫組成的,其核心是sql。odbc函式的主要功能就是將sql語句傳送到目標資料庫中,然後處理這些sql語句返回的結果。使用odbc的基本步驟是:

(1)為odbc分配環境控制代碼;

(2)分配乙個連線控制代碼;

(3)連線到資料庫;

(4)用sql命令分配乙個語句控制代碼;

(5)傳送該命令;

(6)關閉連線;

(7)解除連線和環境控制代碼。

為了更清楚地闡述odbc api的呼叫步驟,以及涉及到的重要函式,我們總結了乙個表(表1)來說明odbc api應用的結構,並給出了必要的注釋,希望對大家有所幫助。

所有odbc應用程式都必須遵循如表1所示的通用odbc api呼叫。

如表1所示,在odbc應用程式中必須做的第一件事情是呼叫sqlallochandle函式來建立乙個環境控制代碼。odbc driver manager使用該環境控制代碼跟蹤每乙個odbc連線和其狀態。接下來,odbc應用程式必須呼叫sqlsetenvattr函式。這個函式註冊將要使用的odbc api版本。如果沒有呼叫這個函式,那麼odbc驅動程式假設應用程式使用odbc 2.0呼叫約定。如果使用設定為sql_ov_odbc 3(其值為3)的sql_attr_odbc_version環境屬性,通過呼叫sqlsetenrattr函式,odbc驅動程式知道該應用程式將使用odbc 3.x呼叫約定。當設定這些環境選項之後,所有odbc應用程式必須呼叫sqlallochandle函式建立乙個資料庫連線控制代碼。當分配資料庫連線控制代碼時,sqlallochandle函式關聯這個新資料庫連線控制代碼來確認在資料庫連線中使用的驅動程式。接下來,使用由以前的sqlallochandle函式返回的資料庫控制代碼,使用sqlconnect函式啟動乙個對資料庫的odbc連線。該sqlconnect函式必須提供連線到目標資料庫的資料所需源名稱和登入資訊。sqldriverconnect函式或者sqlbrowsec**nect函式都可以替代sqlconnect函式。sqldriverconnect函式提示終端使用者輸入必要的資料來源連線資訊,sqlbrowseconnect函式向應用程式返回乙個字串,它確認丟失的連線資訊。當應用程式沒有提供所有必要的資料來源登入資訊時,一般使用sqldriverconnect函式。而sqlbrowseconnect函式通常用來建立定製的登入對話方塊。最後一段odbc初始化**是呼叫sqlallochandle函式,建立乙個語句控制代碼。該語句控制代碼用於處理sql請求。當這個語句分配之後,odbc driver manager使用該語句控制代碼管理odbc連線的狀態資訊。例如,在執行select操作之前,應用程式不能提取資料。語句控制代碼允許odbc driver manager了解odbc語句的當前狀態,因此也知道可以在給定時間執行的有效操作。當分配該語句控制代碼之後,odbc應用程式可以開始使用該語句控制代碼處理sql請求。這是odbc應用程式所做的實際工作。乙個典型的odbc應用程式使用這種語句控制代碼處理許多sql請求,然後檢索和處理這些請求的結果。使用sqlexecute或者sqlexecdirect函式將傳送sql語句到連線的資料庫中。使用sqlexecute函式執行準備的sql或者靜態的sql語句,sqlexecdirect函式用於ad hoc或動態的sql語句。在sqlexecute函式可以使用之前,必須使用sqlprepare函式。sqlexecute一般用於重複執行的sql語句。sqlexecdirect函式通常用於只執行一次的sql語句。sqlexecute和sqlexecdirect函式可以處理任何在主機資料庫上有效的sql語句。如果這個sql請求是乙個select操作,它通常建立乙個結果集,該結果集包含了滿足sql查詢的資訊。使用sqlfetch函式訪問這個結果集。

當odbc應用程式準備終止時,它還必須執行一些清理步驟,釋放各種odbc控制代碼占用的記憶體,然後關閉已啟動的會話。對於每乙個初始化語句,還有乙個相應的清理語句。例如,當odbc應用程式終止時,對於每乙個開啟的語句控制代碼,必須首先執行sqlfreehandle函式。然後,對於每乙個開啟的連線,必須呼叫sqldisconnect函式。接下來,它必須呼叫sqlfreehandle函式釋放由每乙個資料庫連線控制代碼占用的記憶體。最後,odbc應用程式必須呼叫sqlfreehandle函式釋放odbc環境占用的記憶體。剛開始,這些似乎非常複雜,但是對於所有的odbc應用程式,這些odbc初始化和清理函式都是非常類似的。一旦定義了這些函式,就可以把它們剪貼到其他odbc應用程式中。

通用型別系統概述

今天晚上看了.net 通用型別 的結構 以前沒有對它深入學習,對ta 的認識很很侷限,只知道怎麼用,不懂原理,就像俗話說的知其然不知其所以然。以前對這些基礎知識掌握的不牢靠,現在想通過 寫博文的方式加強記憶,寫的不好的地方還請大家 指出 我們一起討論 本人表達能力急待加強,汗顏 c 有兩種型別的資料...

JobClient應用概述

一 應用背景 由於在設計中有乙個模組是對job的管理,所以,在這裡我採用了jobclinet來進行簡單的控制。二 應用點 jobclient指的是org.apache.hadoop.mapred.jobclient這個類。裡面有不少的方法,我這裡列舉一些我用到的和一些需要注意的方法。1 jobcli...

Web應用概述

www全球資訊網,由tim berners lee發明 構成 網頁包含多個物件 物件的定址 url 統一資源定位符 http協議是乙個無狀態協議 伺服器不維護任何有關客戶端過去所發請求的資訊 有狀態的協議更複雜 非永續性連線 永續性連線 ascii 人直接可讀 構成 通過在郵件頭部增加額外的行以宣告...