爲了徹底搞清JAVA的類加載機制,有必要研究一個JDBC的實現代碼,準備從Derby入手。
從Java6開始,Sun的JDK就附帶了一個輕量級的數據庫,名字叫做Derby。也就是Java DB,由IBM於2004年捐給Apache開源項目組。Derby是一個事務關係型的數據庫管理系統,體積非常的小,所有的加起來大約2M左右吧。在最新的Java JDK6發佈版裏,Derby默認安裝在%JAVA_HOME%/db目錄下,包括核心庫,演示程序以及一個例子數據庫。Derby的優勢在於體積小,管理操作簡單。對於開發者來說,你可以輕易地用代碼來創建和使用數據庫,進行所有的數據庫操作也是相當方便的。在系統的開發階段使用Derby,可以加快開發速度。加上Java JDBC的跨數據庫平臺性,要轉換數據庫實現也是很容易的。
下面就來講講Derby的基本使用:
Derby提供了一個命令行工具:ij 表示交互式JDBC腳本工具。通過ij,我們可以連接到數據庫,對數據庫進行各種操作。要使用ij工具,你必須把下面兩個jar文件放到你係統的CLASSPATH中,關於CLASSPATH的設置,你可不要告訴我你不會啊!
set classpath=%JAVA_HOME%/db/lib/derby.jar;%JAVA_HOME%/db/lib/derbytools.jar;
其中,derby.jar包含JDBC驅動,derbytools.jar是ij工具本身。設置好CLASSPATH後,我們就可以輸入下面的命令來使用ij工具,這裏我們以Derby自帶的演示數據庫toursdb爲例:
E:/我的文檔>java org.apache.derby.tools.ij
ij 版本 10.2
ij> connect ‘jdbc:derby:c:/Program Files/Java/jdk1.6.0/db/demo/databases/toursdb’;
ij> SELECT * FROM countries WHERE country LIKE 'C%';
COUNTRY |C&|REGION
--------------------------------------------------------
Cambodia |KH|Asia
Cameroon |CM|Africa
Canada |CA|North America
Cape Verde |CV|Africa
Chile |CL|South America
China |CN|Asia
Colombia |CO|South America
Congo |CG|Africa
Costa Rica |CR|Central America
Cote d'Ivoire |CI|Africa
Cuba |CU|Caribbean
Czech Republic |CZ|Europe
已選擇 12 行
ij>exit;
這樣就退出了ij,下面講一下新建數據庫和表的操作。要創建數據庫,我們需要給connect命令帶上一個”create=true”參數。如果之前已經連上一個已存在的數據庫,那應該先使用disconnect命令斷開連接:
ij> connect 'jdbc:derby:C:/Program Files/Java/jdk1.6.0/db/demo/databases/toursdb';
ij> disconnect;
ij> connect 'jdbc:derby:TestDB;create=true';
ij> CREATE TABLE book(title VARCHAR(50), isbn CHAR(13), author VARCHAR(50));
已插入/更新/刪除 0 行
ij> INSERT INTO book VALUES('Thinking in Java', '1234-37-134-7', 'Bruce Eckel');
已插入/更新/刪除一行
ij> INSERT INTO book VALUES('Core Java', '8888-37-134-8', 'Cay Hostman');
已插入/更新/刪除一行
ij> SELECT * FROM book;
TITLE |ISBN |AUTHOR
--------------------------------------------------------------------------------
-----------------------------------
Thinking in Java |1234-37-134-7|Bruce Eckel
Core Java |8888-37-134-8|Cay Hostman
已選擇 2 行
ij>exit;
使用connect 'jdbc:derby:TestDB;create=true';創建新數據庫TestDB,Derby會在當前目錄(你輸入java org.apache.derby.tools.ij時所在的目錄)創建一個數據庫,子目錄名就是數據庫的名稱。同時在當前目錄還會創建一個derby.log文件,這是一個錯誤日誌文件,記錄了異常情況下的一些信息。TestDB目錄下的文件,保存的就是整個數據庫的信息了,我們絕不應該直接修改這些文件!
如上面所示,Derby提供的命令行工具很容易使用。運行命令後,使用connect來連接數據庫,之後就可以使用SQL語言來對數據庫進行常用的操作了。Derby實現了SQL-92的核心子集,同時也實現了SQL-99的部分特性。關於Derby具體的使用和操作,請參考Apache網站的在線文檔:
Getting started: http://db.apache.org/derby/docs/10.2/getstart/
Derby Reference Manual: http://db.apache.org/derby/docs/10.2/ref/
Derby Developer's Guide: http://db.apache.org/derby/docs/10.2/devguide/
好了,關於Derby的使用就寫到這裏吧!我打算接下來再寫一篇關於JDBC4的文章,到時會再次使用到Derby數據庫,也會更加詳細的講解Derby的使用!
最後提一下,之前我一直是使用HSQLDB的。HSQLDB也是一個開源的小型數據庫,功能強大且使用方便,關於兩者的優劣對比,我並沒有做過,也沒有說這個話的能力。至於使用哪個,選擇權完全在你的手上。不過既然Java6把Derby包含在發佈版裏,那估計今後Derby也會被更多人瞭解和使用吧。
本文參考了:Wrox.Professional.Java.JDK.6.Edition.Jan.2007一書第一部分第一章