范群星
(山西交通職業技術學院,山西 太原 030031)
基于JDBC的數據庫訪問技術的實現
范群星
(山西交通職業技術學院,山西 太原 030031)
為了避免應用對數據庫的依賴性過強,使應用適用于不同的DBMS,JDBC數據庫連接標準為Java應用程序提供了統一的API接口,可以很容易地把SQL語句傳送到任何關系型數據庫中。論文介紹了多種訪問數據庫的接口標準,并進行了比較,同時使用簡單實例演示了JDBC連接數據庫的過程。
SQL;API;ODBC;JDB;UDA
數據庫向用戶提供的數據查詢語言SQL是標準的,但這并不意味著數據庫對應用提供的API(Application Program Interface)也是標準的。從應用開發的角度看,各個數據庫產品生產商向程序提供的API接口差異還是比較大的,因此,選擇適應性更強的數據庫連接標準顯得非常重要。
1.開放數據庫連接標準(Open Data Base Connectivity,ODBC)
ODBC由Microsoft公司提供,定義了數據庫訪問的應用程序接口,即API接口。ODBC的目的是屏蔽各種數據庫存取API接口的差異,為訪問數據庫的應用程序提供了一致的接口。應用程序可以通過稱為ODBC驅動程序的不同的數據庫引擎訪問不同的數據庫管理系統。
2.Java數據庫連接標準(Java DataBase Connectivity, JDBC)
JDBC和ODBC類似,它為Java應用程序提供了統一的API接口。JDBC包括兩個基本部分:一部分是面向開發人員的JDBCAPI,其作用是為程序員提供不同的數據庫連接方式;另一部分是JDBC驅動程序,它可以建立在ODBC基礎上,即程序對JDBC的訪問先轉換為對ODBC的調用,然后利用ODBC完成數據庫訪問;JDBC也可以直接與數據庫連接。目前幾乎所有的應用服務器都為Java程序提供JDBC接口。
3.統一數據存取標準(Universal Data Access,UDA)
UDA是Microsoft公司提出的一種標準,它也力圖為應用程序給出一個統一的API接口,其特點在于它針對的數據源不僅僅局限于關系數據庫,而且可以是非關系型的數據文件、圖形圖像等。在UDA機制中,應用程序通過ADO(Advanced Data Object)接口訪問數據,而ADO可通過OLE DB訪問非關系型的數據或者通過ODBC驅動程序訪問不同的數據庫。
1.Java不能直接使用ODBC
因為ODBC使用C語言接口,如果讓Java來調用本機C代碼的話,那會在安全、屬性、應用的可移植性等方面帶來困難。
2.通過JDBC,可直接把ODBC翻譯成具有Java風格的面向對象的接口
例如,ODBC使用了大量的易于出錯的指針,而Java取消了這種不安全的指針,無須逐字翻譯。
3.JDBC的Java API提供“純Java”的解決辦法
當使用ODBC時,ODBC驅動器管理程序與驅動器必須手工地裝入到每架客戶機上。而JDBC驅動器全部是用Java編寫的,JDBC代碼則在所有Java平臺 (從網絡計算機到主機)上都可自動安裝,并且是可移植的和安全的。
4.UDA的應用不夠廣泛
UDA雖然提供了對不同數據源的一致的存取方式,但是遺憾的是,UDA機制目前除了在Microsoft的產品中有深入應用外,其他IT廠商在產品方面的支持并不非常廣泛。
該實例使用的數據庫管理系統是MySQL,JSP容器是Tomcat 6.0,使用的MySQL版本是mysq1-6.0.11-alpha,Tomcat的版本是apache-tomcat-6.0.18。將兩個軟件分別進行安裝、配置及測試。
1.準備數據庫驅動程序和數據庫
(1)準備數據庫驅動程序
要使用JDBC連接數據庫,JDBC數據庫驅動程序是必不可少的,它是數據庫和Java編程語言的接口,這里所使用的數據庫驅動程序是mysq1-connector-java-5.1.10,將從 MySQL官方網站(http://www.mysql. com)上下載的壓縮包(mysql-connector-java-5.1.10.zip)解壓縮到本地硬盤,然后將解壓目錄下的mysql-connector-java-5.1.10-bi n.j a r文件復制到 <TOMCAT_HOME>/lib目錄下。
(2)準備數據庫
新建名為jdbctestdb的數據庫,并在其下建立一個名為animalInfo的表,表中各數據字段如表1所示,并在表中添加如下的數據,如表2所示。

表1 animalInfo數據表的數據字段

表2 animalInofo數據表的數據
2.編寫訪問數據庫的JSP文件
上述工作準備完成后就可以編寫訪問數據庫的代碼了。
在該例中,要實現的功能就是把數據庫中的數據查詢出來并在頁面上顯示,將以下JSP文件代碼保存到jdbc.jsp文件中:


3.發布訪問數據庫的Web應用
首先,在<TOMCAT_HOME>/webapps目錄下新建一個 JDBCFirst文件夾,在該文件夾下創建目錄WEB-INF,并在WEB-INF下創建目錄classes和文件web.xml。web.xml的代碼如下:


其次,將 jdbc.jsp文件和數據庫驅動程序mysql-connector-java-5.1.10.zip解壓目錄下的src文件夾復制到JDBCFirst目錄下。
最后,啟動Tomcat,然后在瀏覽器地址欄中輸入如下地址:http://localhost:8080/JDBCFirst/jdbc.jsp,可以看到顯示結果。
1.Java數據庫連接(JDBC)由一組用Java編程語言編寫的類和接口組成。JDBC為工具/數據庫開發人員提供了一個標準的API,使他們能夠用純Java API來編寫數據庫應用程序,并支持將SQL語句發送到相應的任何一種關系型數據庫,從而實現與數據庫的連接。
2.由于在配置MYSQL服務器時,已經將其字符集設置為gb2312,而JSP文件也使用gb2312編碼,所以在顯示字符串內容時,不需要進行字符集的轉換。否則就需要在顯示內容的語句中使用<%=new String(rs. getString(“XXXX”).getBytes(“ISO8859-1”),”gb2312”)%>這樣的語句進行字符集的轉換,以使數據能正常顯示。
3.如果在運行時提示javax.servlet.ServletException: com.mysql.jdbc.Driver或java.lang.ClassNot FoundException:com.mysql.jdbc.Driver錯誤,請確保已經正確安裝了數據庫驅動程序。
4.直接在命令提示符下進行mysql數據庫的操作比較復雜,如果使用mysql提供的mysqldump工具實現的話,就容易且方便得多。
[1]劉軍,馬敏書.電子商務系統的分析與設計[M].北京:高等教育出版社,2008:286-295.
[2]鄭彥孚.MySQL的JDBC編程實例[J].電腦開發及應用,2007,(1):58-63.
[3]樊新華,孟鉑.基于JDBC的通用的訪問數據庫方法[J].電腦知識與技術,2008,(7):1545-1546,1554.
[4]張作宸.JDBC原理及操縱數據庫方法[J].科技信息,2009,(2):490.
[5]童少娟.淺談Java數據庫連接[J].中國校外教育,2009,(7):168.
[6]郭廣軍,陳代武,胡玉平,李芝城.基于JDBC的數據庫訪問技術的研究[J].南華大學學報(自然科學版),2005,(6):50-54,57.
TP
A
1673-0046(2010)7-0174-03