[摘 要]本文以應用程序開發領域中的兩大編程體系為基礎,結合當前主流數據庫訪問技術,從縱向闡述了應用程序與數據庫連接的問題。
[關鍵詞]數據庫連接 B/S架構 C/S架構 數據庫訪問技術 VB ADO JDBC
[中圖分類號]TP [文獻標識碼]A [文章編號]1009-5489(2009)07-0094-02
一、應用程序與數據庫的訪問接口技術
應用程序在與不同數據庫進行連接訪問時,通過數據庫訪問接口進行訪問,這樣,應用程序開發者只須面對統一的數據訪問接口的數據源,而不必針對各種數據庫進行不同的設置,使程序具備更好的適應性和可移植性,甚至可以同時訪問多種不同的數據庫。數據庫訪問接口是應用程序與數據庫之間的紐帶。
1.應用程序中兩種編程體系
目前在應用開發領域中,主要分成兩大編程體系,一種是基于瀏覽器的B/S(Browser/Server)結構,另一種是C/S(Client/Server)結構。
(1)B/S架構
B/S架構編程語言分成瀏覽器端編程語言和服務器端編程語言。瀏覽器語言包括HTML、CSS、JavaScript語言和VBScript語言。為了實現連接數據庫,操作文件等,需要使用服務器端編程語言。目前主要采用JSP和ASP兩種服務器端語言。
(2)C/S架構
C/S構架編程體系中常用的開發語言分成兩大體系:Basic語系(VB、VBScript等)和C系(Java、JavaScript、C++、JSP)。
兩種架構編程體系中數據庫支持是必須的,根據不同的架構編程體系,應用程序在與數據庫連接時,具有與其相適應的數據庫訪問技術。
2.當前主流數據庫訪問技術
針對不同的應用程序及開發工具,當前主流的數據庫訪問技術有DAO、RDO、ADO/ADO.NET、ODBC、JDBC、OLE DB等,DAO和RDO現在使用的不多。
(1)數據訪問對象(DAO)
DAO(data access object)數據訪問對象,是微軟提供的用于訪問Microsoft JET數據庫文件的強有力的數據庫開發工具,它通過DAO的封裝,向程序員提供豐富的操作數據庫的手段。但由于其對象模型的限制,其功能就顯弱勢,不過它對Access數據庫進行了相當多的優化,用它訪問Access數據庫效果極佳。
(2)遠程數據訪問對象(RDO)
RDO(remote data object)遠程數據對象,是位于ODBC API之上的一個對象模型,它依賴ODBC API,選定ODBC驅動程序以及后端數據庫引擎實現大部分功能。微軟推出新的ADO模型后,宣布不再近一步支持RDO,所以如果不是為了系統兼容,盡量不要用RDO。
(3)開放數據庫互連(ODBC)
ODBC(open Database Connectivity)開放數據庫互連,是微軟公司提出最早的整合異質數據庫的數據庫接口,是ADO的前身。支持應用程序以標準的ODBC函數和SQL語句操作各種不同的數據庫。ODBC驅動程序相當于一個轉換開關,它負責將應用程序發送來的SQL語句傳遞給各種數據庫驅動程序處理,再將處理結構送回應用程序。它提供了一組對數據庫訪問的標準API(應用程序編程接口),這些API利用SQL來完成其大部分任務。
(4)ActiveX數據對象(ADO)
ADO(ActiveX data object)ActiveX數據對象,是微軟公司開發數據庫應用程序的面向對象的新接口。它是建立在OLE DB底層技術之上的高級編程接口,因而兼具強大的數據處理功能和及其簡單易用的編程接口。使用ADO開發數據庫應用程序是發展的趨勢和方向。隨著網絡技術和數據庫技術的不斷發展,出現了UDA(universal data Access一致數據訪問)技術和ADO.NET對象模型。ADO.NET是與微軟提出的.NET Framework 框架相適應的新的數據模型。
(5)Java數據庫連接(JDBC)
JDBC(Java DataBase Connectivity)Java數據庫連接,它在工作原理上與ODBC相同,是在Java中以面向對象的方法來連接數據庫的技術,是對ODBC API進行的一種面向對象的封裝和重新設計。它是專門的Java數據庫編程接口,支持跨平臺操作易于學習和使用。
(6)OLE DB
OLE DB(object linking and embedding database)是基于COM接口的一種數據訪問技術,與ODBC API技術相似,OLE DB屬于數據庫訪問技術的底層接口。它對所有的文件系統包括關系數據庫和非關系數據庫都提供了統一的接口,這使它與傳統的數據庫訪問技術相比具有更大的優越性。
二、不同編程體系中數據庫訪問技術的具體應用
1.VB中用ADO訪問數據庫(C/S結構)
在VB中,用戶可以用三種數據訪問接口技術,即數據訪問對象(DAO)、遠程數據對象(RDO)和ActiveX數據對象(ADO)這三種接口代表了數據庫訪問技術的三個發展時代。其中ADO是最新的,它最簡單也最靈活,因此本文主要介紹采用ADO技術作為數據訪問接口。
(1)用ADO Data控件實現連接。
ADO Data控件是ActiveX數據對象,是操作數據庫的控件。它將一個數據源連接到一個數據感知控件(工具箱常用控件中與Data控件綁定的控件)。通過設置ADO Data控件的Connection String屬性完成與數據庫的連接。
在Connection String的屬性頁對話框中,可以選擇三種數據源:即OLE DB文件;ODBC數據源;連接字符串。如果創建OLE DB數據庫連接,則打開“Windows資源管理器”,新建一個OLE DB文件,設置屬性與數據庫連接;如果需要創建ODBC數據源,則從Windows系統的“控制面板”使用“ODBC數據源管理器”來實現;如果要創建字符串連接,則通過點擊屬性頁中的“生成”按鈕,在彈出的數據連接屬性對話框中分別設置“提供程序”選項卡(選擇通過OLE DB提供的所需數據庫)和“連接”選項卡(選擇服務器名稱、設置登陸服務器信息、選擇數據庫)來實現。建立好連接后通過與數據感知控件的配合使用,設置具體的屬性,方法來實現對數據庫的操作。
(2)ADO編程模型實現連接。
ADO編程模型的核心是ADO的Command,Recordset和Connection對象。①用Connection對象與數據庫建立連接,通過連接可從應用程序訪問數據源。②在Connection后,用Command對象發出命令操作數據源。一般情況下可在數據源中添加、刪除、更新數據,或者在表中查詢數據。③Recordset對象,基于某個連接的表或Command對象的執行結果。在ADO模型中對數據源的行操作幾乎都是Recordset對象完成的。
(3)數據環境設計器實現連接。
數據環境設計器(Data Environment)是實際數據庫的工具,能夠可視化地創建和修改表、表集和報表的數據環境,為建立連接和定義命令提供了很好的圖形接口。
2.JSP中用JDBC訪問數據庫(B/S結構)
Java作為一種開發語言,從其誕生的那一刻起,就是為網絡服務的。和C/C++、Basic等傳統語言相比,其跨平臺、簡單易學、面向對象等特點,使其成為開發人員的首選語言之一。
(1)JDBC驅動程序
JDBC是Java訪問數據庫的標準方式。其工作原理如圖所示。

JDBC驅動程序類型分為4種。
1)JDBC-ODBC橋加ODBC驅動程序。
2)本地API。
3)JDBC網絡純Java驅動程序。
4)本地協議純Java驅動程序。
第1類和第2類驅動程序作為過度方案使用,第3類和第4類驅動程序將成為JDBC訪問數據庫的首選方法。
(2)使用JDBC訪問數據庫步驟
使用JDBC有兩大步驟:裝載驅動程序和建立連接。
第一步:安裝驅動程序。
常用的JDBC驅動程序有Oracle的驅動程序classes12.jar,DB2的驅動程序db2java.jar,SQL Server的驅動程序mssqlserver.jar,MySql的驅動程序mysql.jar。
加載Oracle的JDBC驅動程序代碼:
Class.forName(“oracle.jdbc.driver.OracleDriver”);
若無JDBC驅動程序,可使用JDBC-ODBC橋驅動程序。使用此驅動程序的代碼:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
第二步:建立連接。
①創建一個Connection的實例來建立與數據庫之間的連接。
代碼為:Connection con=DriverManager.getConnection(url,\"myLogin\",\"myPassword\");
②用DriverManager類的getConnection()方法來建立與數據庫的連接。語法如下:
Public static Connection getConnection(String url,Sring user,String password)throws SQLException
在程序的最后,應該關閉Connection對象:
Public void close()throws SQLException
代碼中url的設置:
①使用 JDBC-ODBC 橋,JDBC 中URL 將以 jdbc:odbc 開始:余下 URL 通常是你的數據源名字或數據庫系統。
②使用第三方開發的 JDBC驅動程序,文檔將告訴你該使用什么 subprotocol,就是在 JDBC URL 中放在 jdbc 后面的部分。
③裝載的驅動程序識別了提供給 DriverManager.getConnection 的 JDBC URL,那個驅動程序將根據 JDBC URL 建立一個到指定 DBMS 的連接。
連接建立后,就可以用來向它所涉及的數據庫傳送SQL語句。可以使用JDBC中的Statement對象將SQL語句發送到數據庫中,用ResultSet對象的一套get方法對符合SQL語句執行結果的所有行中的數據進行訪問,用PreparedStatement對象來是想對SQL語句進行預編譯,來實現高效地多次執行,還可以使用CallableStatement對象實現調用儲存過程。通過JDBC中這些對象來完成對數據庫的操作。
[參考文獻]
[1]東方人華主編,王彬、劉心、馬興城編著:《oracle 10g》,清華大學出版社2005年7月版。
[2]鄭阿奇主編,曹戈編著:《Visual Basic 實用教程》(第2版),電子工業出版社2004年1月版。
[3]張梅峰主編,馬吉明、張建偉副主編:《Visual Basic.NET程序設計與算法基礎》,電子工業出版社2004年4月版。