河南省對外科技交流中心 張成鵬 李怡君
鄭州市第六人民醫院 李 冬
數據庫訪問技術的研究
河南省對外科技交流中心 張成鵬 李怡君
鄭州市第六人民醫院 李 冬
隨著計算機的產生和計算技術的不斷發展,以及科技的進步特別是信息產業的發展,把我們帶入一個全新的信息時代。為此,人們需要收集、加工和處理大量的信息和數據,數據庫技術是隨著數據和信息管理而產生的。在所有的數據庫系統中,關系型數據庫是目前應用最為廣泛的數據庫之一。
由于不同數據庫應用程序開發工具有不同的訪問方式,而且不同的數據供應商又提供了不同的接口,致使用戶在使用開發工具進行數據庫應用程序開發時,對不同的訪問方式產生了迷惑和不解,不知道哪一種訪問方式的效率和效果最好。本文,筆者探討了常用數據庫應用程序開發工具對不同數據庫的訪問方式。其中,數據庫應用程序開發工具以VB、ASP為例,數據庫以Access、SQLServer和Oracle為例。
VB和ASP都是微軟提供的系統開發工具。VB是微軟VisualStudio集成開發工具中的一個開發工具,它既可以開發單機結構數據庫應用程序,又可以開發C/S結構的應用系統。VB使用DAO、RDO、ADO數據庫訪問方式。ASP也是微軟提供的一個開發工具,主要用于開發B/S結構的應用程序,ASP使用ADO數據庫訪問方式。下面,筆者分別介紹一下以上3種方式對Access、SQLServer和Oracle的訪問技術。
數據庫訪問對象(DataAccessObject,簡稱DAO),它是一組以數據庫引擎(TheJetDataBaseEngine)為核心而建立起來的動態連接庫(DLLS)。DAO支持2種不同類型的數據庫環境:利用MicrosoftJetDataBaseEngine,使得DAO成為訪問本地ISAM數據庫的最佳手段;利用ODBCDirect,使得DAO在訪問ODBC類型數據庫時擁有最小的額外開銷。
1.DAO可存取的數據庫。DAO可以存取本地DAO數據庫,即MicrosoftAccess和ODBC數據庫,包括SQLServer、Oracle、Sybase和任何提供ODBC驅動的客戶機/服務器數據庫,以及FoxPro、Lotus、文本文件等內容。
以上每個數據庫源都提供了不同的安全等級。DAO的主要目的就是將程序員從每個數據庫的細節中解脫出來而向他們提供統一的API接口。
2.DAO的基本對象。DAO中有3個最基本的對象:DBEngine、Workspce和DataBase。
(1)DBEngine。DBEngine對象用于數據庫引擎指定系數參數,DBEngine中的DefaultType屬性用于描述缺省的Workspace類型。如果其屬性設置為dbUseODBC,則使用ODBCDitect模式。Workspace對象作為一個打開的數據庫的容器。
(2)Workspace。Workspace為打開的數據庫提供安全的設備環境。在創建DBEngine的同時,程序自動創建了一個缺省的Workspace對象,用來指定訪問數據庫的用戶名和口令。
(3)Database。Database對象封裝了數據庫存儲器,并且還定義了數據庫的表格、關系、存儲查詢及打開記錄等。
遠程數據對象(RemoteDataObject,簡稱RDO)是位于ODBCAPI之上的一個對象模型層,它依賴ODBCAPI、選定的ODBC驅動程序以及后端數據庫引擎來實現大部分的功能。RDO具備基本的ODBC處理方法,所以可以直接執行大多數ODBCAPI函數。RDO已包含在VB4.0/5.0企業版中,由一個動態連接庫MSRDO32.DLL來實現。
1.RDO數據庫接口。RDO面向客戶機/服務器程序的特殊需求提供了一組對象以輔助這種程序的開發。與DAO提供的Jet數據庫引擎接口不同,RDO提供的是一個直接與ODBCAPI連接的面向對象的抽象層。RDO使用ODBCAPI和數據庫服務器驅動器創建到數據庫服務器的鏈接,創建查詢和用于瀏覽結果設計集的游標,并且依賴數據庫服務器執行復雜的請求過程。它不像DAO那樣,利用Jet數據庫引擎進行查詢的預處理和連接管理,而是直接與數據庫服務器交互,這使得RDO特別適用于客戶機/服務器型應用程序的開發。
2.RDO的基本對象。要想正確地使用RDO,必須要對其對象模塊結構加以理解。在RDO的對象和集合中,有很多對數據庫的狀態和設定進行操作的屬性,以及對數據庫進行操作的方法。RDO主要包括rdoEngine對象、rdoEnvironment對象和rdoConnection對象。
(1)rdoEngine對象。最初調用RDO對象以及RDC(遠程數據控件)時,系統會自動生成rdoEngine對象的附帶事件。rdoEngine用于對RDO全局屬性的參數和選項進行設置,是RDO的階層結構內最上層的對象,包含了其他所有的對象。
(2)rdoEnvironment對象。DAO對象在自動創建rdoEngine對象時,生成rdoEnviroment對象的初始值并保存為rdoEnviroments(0)。在一般情況下,應用程序中不必追加rdoEnvironment對象,大多數只需對已有的rdoEnviroments(0)進行操作就可以了。只有在支持1個以上事務(Transaction)時,需要將用戶名和口令信息分別處理,利用rdoCreateEnvironment方法將特定的用戶名和口令值做成新的rdoEnvironment對象。
(3)rdoConnection對象。rdoConnection對象用于同SQL Server的連接管理,下面是與SQLServer連接的例子。
首先用New關鍵字聲明一個rdoConnection對象,由此生成獨立的連接對象,這時它還不是rdoConnection集合的成員。然后在具體連接到SQLServer數據庫之前,設定rdoConnection集合的屬性。
ActiveX數據對象(ActiveXDataObject,簡稱ADO)。API是另一種用于開發訪問OLEDB數據源應用程序的API。有很多種程序設計語言都支持ADO,包括VisualBasic、VisualC++、VBScript、VisualJ++和ActiveServerPage等。
1.OLEDB數據庫接口。OLEDB是COM模型的數據庫接口。它是一系列的接口集合,介紹了一種通用的數據訪問方法。也就是說,OLEDB并不局限于ISAM、JET甚至關系數據源,而是能夠用于處理任何類型的數據。OLEDB向應用程序提供1個統一的數據訪問方法,而不考慮它們的格式和存儲方法。ADO集合了DAO和RDO的優點,而且它不像DAO和RDO那樣嚴格遵循對象的層次關系。這就意味著ADO對象更容易創建和操縱,因為它們都可以直接地創建和管理。ADO更適用于開發C/S和B/S結構的應用程序。圖1說明了一個典型ADO應用程序的配置。

2.ADO的基本對象。
(1)Connection對象。一個Connection對象代表1個到指定數據源的成功連接,應用程序通過鏈接訪問數據源,也可以直接訪問數據源,或者通過類似MicrosoftInternetInformationServer的中間層間接訪問數據源。鏈接成功后,Connection以對象的形式存在。
(2)Command對象。Command對象是對數據源執行的一系列操作的定義。使用Command對象來查詢數據庫并返回數據集對象形式的查詢結果。Command對象指定變量和參數來完成對數據的操作,如添加記錄、刪除記錄和更新紀錄等。
(3)Recordset對象。如果命令行指定數據以表的形式組織,執行命令后將返回相應的數據集。通過數據集可以對記錄以及組成記錄的列進行各種操作,如添加、修改和刪除等操作。