詳述Visual C++語言編寫數(shù)據(jù)庫
目前,在Web開發(fā)上,Visual C++語言沒有多大的市場。在企業(yè)級的應用上,以Java、.NET(C#是其中重要的一員)居多,C++仍然占有一席之地,在這里拿出來和大家分享一下,希望本文能教會你更多東西。
一個基于odbc的應用程序?qū)?shù)據(jù)庫的操作不依賴任何dbms,不直接與dbms打交道,所有的數(shù)據(jù)庫操作由對應的dbms的odbc驅(qū)動程序完成。也就是說,不論是foxpro、access還是oracle數(shù)據(jù)庫,均可用odbc api進行訪問。由此可見,odbc的***優(yōu)點是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。
一個完整的Visual C++語言由下列幾個部件組成:
odbc管理器(administrator)。該程序位于windows 95控制面板(control panel)的32位odbc內(nèi),其主要任務是管理安裝的odbc驅(qū)動程序和管理數(shù)據(jù)源。 驅(qū)動程序管理器(driver manager)。驅(qū)動程序管理器包含在odbc32.dll中,對用戶是透明的。其任務是管理odbc驅(qū)動程序,是odbc中最重要的部件。 odbc api。
odbc 驅(qū)動程序。是一些dll,提供了odbc和數(shù)據(jù)庫之間的接口。 數(shù)據(jù)源。數(shù)據(jù)源包含了數(shù)據(jù)庫位置和數(shù)據(jù)庫類型等信息,實際上是一種數(shù)據(jù)連接的抽象。 各部件之間的關系如圖下圖所示:
應用程序要訪問一個數(shù)據(jù)庫,首先必須用odbc管理器注冊一個數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及odbc驅(qū)動程序等信息,建立起odbc與具體數(shù)據(jù)庫的聯(lián)系。這樣,只要應用程序?qū)?shù)據(jù)源名提供給odbc,odbc就能建立起與相應數(shù)據(jù)庫的連接。
在odbc中,odbc api不能直接訪問數(shù)據(jù)庫,必須通過驅(qū)動程序管理器與數(shù)據(jù)庫交換信息。驅(qū)動程序管理器負責將應用程序?qū)dbc api的調(diào)用傳遞給正確的驅(qū)動程序,而驅(qū)動程序在執(zhí)行完相應的操作后,將結(jié)果通過驅(qū)動程序管理器返回給應用程序。#t#
在訪問odbc數(shù)據(jù)源時需要odbc驅(qū)動程序的支持。用Visual C++語言安裝程序可以安裝sql server、 access、 paradox、 dbase、 foxpro、 excel、 oracle 和microsoft text等驅(qū)動程序.在缺省情況下,vc5.0只會安裝sql server、 access、 foxpro和dbase的驅(qū)動程序.如果用戶需要安裝別的驅(qū)動程序,則需要重新運行vc 5.0的安裝程序并選擇所需的驅(qū)動程序。
1 ado是微軟整個com戰(zhàn)略體系中的一個組成部分
活動數(shù)據(jù)對象(ado)是一組由微軟提供的com組件。 ado建立在微軟所提倡的com體系結(jié)構(gòu)之上,它的所有接口都是自動化接口,因此在c++、visualbasic、delphi等支持com的開發(fā)語言中通過接口都可以訪問到ado。ado通過使用ole db這一新技術實現(xiàn)了以相同方式可以訪問關系數(shù)據(jù)庫、文本文件、非關系數(shù)據(jù)庫、索引服務器和活躍目錄服務等的數(shù)據(jù),擴大了應用程序中可使用的數(shù)據(jù)源范圍,從而成為微軟整個com戰(zhàn)略體系中訪問數(shù)據(jù)源組件的***,是odbc的替代產(chǎn)品。
2 Visual C++語言模型組成
與微軟的其它數(shù)據(jù)訪問模型dao和rdo相比,ado對象模型非常精煉,僅由三個主要對象connection、command、recordset和幾個輔助對象組成,其相互關系如圖所示。connection對象提供ole db數(shù)據(jù)源和對話對象之間的關聯(lián),它通過用戶名稱和口令來處理用戶身份的鑒別,并提供事務處理的支持;它還提供執(zhí)行方法,從而簡化數(shù)據(jù)源的連接和數(shù)據(jù)檢索的進程。command對象封裝了數(shù)據(jù)源可以解釋的命令,該命令可以是sql命令、存儲過程或底層數(shù)據(jù)源可以理解的任何內(nèi)容。#t#
record set用于表示從數(shù)據(jù)源中返回的表格數(shù)據(jù),它封裝了記錄集合的導航、記錄更新、記錄刪除和新記錄的添加等方法,還提供了批量更新記錄的能力。其它輔助對象則分別提供封裝ado錯誤、封裝命令參數(shù)和封裝記錄集合的列。