Derby資料庫是一個純用Java實作的記憶體資料庫,屬于Apache的一個開源項目。由于是用Java實作的,是以可以在任何平台上運作;另外一個特點是體積小,免安裝,隻需要幾個小jar包就可以運作了。
Apache Derby 是一個與平台無關的資料庫引擎,它以 Java 類庫的形式對外提供服務。與其他難以部署的資料庫不同,安裝 Derby 非常簡單,隻需要将其 .jar 檔案複制到系統中并為您的項目添加該 .jar 檔案即可。
Derby擁有一個令人驚奇的特性清單。它可以支援關系資料庫中的所有企業級的特性,包括崩潰恢複、事務復原和送出、行/表級鎖、視圖、主鍵/外鍵限制、觸發器、子查詢表達式,等等。一部分的清單特性使Derby從其他的Java 關系資料庫管理系統中分離出來,包括:
100% Java實作
100% Java類型4 JDBC驅動
SQL92E标準支援大部分SQL 99特性
ACID完全的事務獨立的事務支援
J2EE支援JNDI,連接配接池和XA
視圖,臨時表和儲存
BLOB和CLOB資料類型
行和表鎖定
有價值的基本查詢優化
伺服器端訓示限制
觸發器和存儲過程
為伺服器端函數,觸發器或存儲過程等操作在資料庫裡存儲Java代碼
能排除CD-ROM裡的隻讀資料庫
資料的導入和導出
快速資料庫加密選項
Derby資料庫有兩種運作模式:
1) 内嵌模式。Derby資料庫與應用程式共享同一個JVM,通常由應用程式負責啟動和停止,對除啟動它的應用程式外的其它應用程式不可見,即其它應用程式不可通路它;
在采用嵌入式模式來使用Derby時,應用程式會在啟動和關閉時分别自動啟動或停止關系引擎。Derby包的derby.jar檔案(2MB)包含了Derby 資料庫引擎和嵌入式JDBC驅動程式。嵌入式模式的主要優點是不需要進行網絡 和伺服器設定。因為你的應用程式包含了Derby引擎,使用者并不知道你使用了一個關系資料庫。這點很适合我們現在桌面工具的使用要求。
2) 網絡模式。Derby資料庫獨占一個JVM,做為伺服器上的一個獨立程序運作。在這種模式下,允許有多個應用程式來通路同一個Derby資料庫
在Apache上,Derby有4種釋出包,這裡以bin釋出包為例。bin釋出包中含有包含了執行derby資料庫工具、設定derby資料庫環境的腳本檔案、Demo、jar檔案等。
1、 安裝Derby資料庫
隻需要從Derby官方網站下載下傳Derby的zip或者tar包,解壓就可以了。這裡以db-derby-10.4.1.3-bin版本為例,解壓後得到以下目錄:
1) bin目錄,包含了一些工具腳本和裝置環境的腳本;
2) demo目錄,包含了一些執行個體程式;
3) docs目錄,包含了Derby的文檔;
4) javadoc目錄,包含了Derby的API文檔;
5) lib目錄,包含了Derby資料庫的jar檔案;
6) test目錄,Derby的一些測試jar包;
2、 使用Derby腳本
Derby提供了幾個腳本來操作Derby資料庫,在使用這些腳本前,你必須先設定好Derby的運作環境。
下面的例子都是在指令行下設定環境變量,這些設定都是臨時的,如果你新開一個指令行視窗,則需要重新設定一遍,如果想要使環境變量永久生效,可以在我的電腦中進行設定。
首先設定好DERBY_HOME這個環境變量,為DERBY_HOME指定你的derby目錄,假如你的derby解壓到了E:/ db-derby-10.4.1.3-bin目錄下,則可以在指令行中如下設定:
set DERBY_HOME=E:/ db-derby-10.4.1.3-bin
将DERBY_HOME/bin目錄添加到PATH環境變量中:
set path=%DERBY_HOME%/bin;%PATH%
這樣可以簡化你稍後在指令行中的輸入,否則你每次都必須使用腳本的全路徑或者你必須到DERBY_HOME/bin目錄中才能執行腳本。
最後需要Derby的jar包添加到classpath環境變量中,在DERBY_HOME%/bin目錄中提供了幾個腳本用于設定classpath,以簡化你手工在classpath中添加jar包的麻煩:
1) setEmbeddedCP。當使用内嵌模式來運作Derby時,可以使用該腳本來設定。該腳本将derby.jar和derbytools.jar添加到環境變量中;
2) setNetworkServerCP。當使用網絡模式來運作Derby時,用該腳本來設定Derby服務端的classpath變量。該腳本将derbynet.jar添加到環境變量中;
3) setNetworkClientCP。當使用網絡模式來運作Derby時,用該腳本來設定Derby用戶端的classpath變量。該腳本将derbyclient.jar和derbytools.jar添加到環境變量中。
一般隻有當你通過derbyrun.jar來運作Derby工具時才會使用這些腳本。
Derby提供了三個工具腳本:1)sysinfo;2)ij;3)dblook。運作這三個腳本時,如果你沒有設定classpath環境變量,這些腳本會自動進行設定。
1) sysinfo
使用sysinfo可以顯示你的Java環境資訊和Derby的版本資訊。使用方法就是在指令行下直接輸入:
sysinfo.bat
2) dblook
使用dblook可以将全部或者部分資料庫的DDL定義導出到控制台或者檔案中。使用方法:
dblook.bat -d <sourceDBUrl> [Options]
3) ij
使用ij工具來進行資料庫互動,執行SQL腳本,如查詢、增删改、建立表等等。在指令行下輸入:
ij.bat
即可啟動ij工具,然後就可以開始執行SQL腳本了。當要退出ij工具時,在指令行下輸入
exit;
即可。
3、 使用ij腳本
1) 運作内嵌模式的Derby資料庫
在指令行中輸入ij.bat後啟動ij工具。然後通過如下指令建立資料庫,并與資料庫建立連接配接:
connect ‘jdbc:derby:firstdb;create=true';
通過connect指令可以與指定資料庫建立連接配接,通過一個JDBC URL來指定與哪個資料庫建立連接配接。ij指令是不區分大小寫的。
參數中jdbc:derby是Derby資料庫的驅動協定;firstdb是資料庫命,由于沒有指定路徑,資料庫将會被建立在目前你指令行下所在的目錄下;create=true表示如果資料庫不存在,則建立該資料庫;";"是ij指令的終止符。
當資料庫建立成功時,Derby會在目前你指令行下所在的目錄下建立一個與資料庫命一緻(這裡是firstdb)的目錄,其中存放了資料庫的檔案。
與資料庫連接配接上後,就可以開始執行SQL腳本了,如建立一個表格:
create table firsttable(id int primary key, name varchar(20));
然後插入記錄:
insert into firsttable values(1, ‘Hotpepper');
也可以執行查詢:
select * from firsttable;
也可以通過run指令來執行sql檔案:
run 'E:/derby/demo/programs/toursdb/ToursDB_schema.sql';
最後通過exit;來退出ij工具。
你可以在目前你指令行下所在的目錄中找到一個derby.log的日志檔案,derby在其中記錄的資料庫啟動、關閉的資訊。
2) 運作網絡模式的Derby資料庫
這種模式下,需要使用兩個控制台視窗,一個用于啟動Derby資料庫服務端,另一個做為通路Derby資料庫的用戶端。
可以通過DERBY_HOME/bin目錄下的startNetworkServer.bat來啟動Derby資料庫服務端,隻需要在指令行中輸入:
startNetworkServer.bat
資料庫就啟動了,啟動成功會在控制台輸出如下資訊:
已使用基本伺服器安全政策安裝了安全管理程式。
Apache Derby Network Server - 10.4.1.3 - (648739) 已啟動并且已準備好 2008-09-06
00:38:12.540 GMT 時在端口 1527 上接受連接配接
在另一個控制台使用ij指令通路Derby資料庫服務端,在輸入ij.bat啟動ij工具後,通過如下指令建立與服務端的連接配接,并建立一個資料庫:
connect 'jdbc:derby://localhost:1527/seconddb;create=true';
參數中的資料庫命部分和内嵌模式不同,這裡使用了"//localhost:1527/",通路網絡模式的URL需要指定伺服器的IP位址和端口,其它的就和内嵌模式一樣了。
與服務端連接配接上後,就可以開始執行SQL腳本了,如建立一個表格:
create table firsttable(id int primary key, name varchar(20));
然後插入記錄:
insert into firsttable values(1, ‘Hotpepper');
也可以執行查詢:
select * from firsttable;
也可以通過run指令來執行sql檔案:
run 'E:/derby/demo/programs/toursdb/ToursDB_schema.sql';
最後通過exit;來退出ij工具
4、 在Java應用程式中通路Derby資料庫
使用Java代碼通路Derby資料庫與通路其它資料庫的差別如下:
1) JDBC驅動的不同;
2) 資料庫連接配接URL的不同;
3) 在通路内嵌模式資料庫時,需要顯示關閉資料庫。
下面分别執行個體通路内嵌模式和網絡模式Derby資料庫的代碼
1) 通路内嵌模式Derby資料庫
String driver = "org.apache.derby.jdbc.EmbeddedDriver";
String url = "jdbc:derby:firstdb;create=true";
Connection conn;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url);
}catch(Exception e) {
......
}finally {
......
DriverManager.getConnection("jdbc:derby:;shutdown=true");
}
建立好連接配接後,其它的資料操作,如查詢、更新資料都和其它資料庫一樣,這裡不詳述。有一點需要注意,通過Java應用程式通路内嵌模式Derby資料庫時,應用程式有責任需要在程式結束時關閉Derby資料庫,如上面代碼finally中的
DriverManager.getConnection("jdbc:derby:;shutdown=true");
shutdown參數用于關閉Derby資料庫,如果url中指定了資料庫命,則隻會關閉指定的資料庫,而不會關閉整個Derby資料庫。資料庫關閉成功時,Derby會抛出一個錯誤碼為XJ015和一個08006的異常表示關閉成功,應用程式可以不處理這兩個異常。
2) 通路網絡模式Derby資料庫
網絡模式和内嵌模式的不同出在于:
A. 資料庫連接配接URL的不同;
B. 應用程式退出時無效關閉Derby資料庫;
C. 資料庫驅動的不同;
String driver = "org.apache.derby.jdbc.ClientDriver";
String url = "jdbc:derby: //localhost:1527/firstdb;create=true";
Connection conn;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url);
}catch(Exception e) {
......
}
由于網絡模式下,Derby資料庫做為一個獨立運作的資料庫,可以被多個應用程式所通路,是以應用程式在運作結束時不應該關閉Derby資料庫。
5、 使用derbyrun.jar
通過derbyrun.jar也可以使用上面提到的sysinfo、ij、dblook三個腳本的功能,在使用derbyrun.jar前,除了DERBY_HOME環境變量外,你必須顯示設定好classpath環境變量,可以通過上面提到的setEmbeddedCP、setNetworkServerCP、setNetworkClientCP幾個腳本來設定,具體使用哪個腳本取決于你如何使用Derby資料庫。
可以通過java -jar %DERBY_HOME%/lib/ derbyrun.jar來運作derbyrun中的工具:
1) 使用sysinfo。java -jar %DERBY_HOME%/lib/ derbyrun.jar sysinfo
2) 使用ij。java -jar %DERBY_HOME%/lib/ derbyrun.jar ij
3) 使用dblook。java -jar %DERBY_HOME%/lib/ derbyrun.jar dblook
6、 在Embedded模式下指定生成的資料庫檔案存放目錄,可以通過url來指定
例如: jdbc:derby:d:/temp/test;create=true 這樣一個url 來連接配接embedded derby資料庫。就會在d:/temp/目錄下生成一個test目錄。在test目錄下存放整改資料庫test的檔案。
本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/remote_roamer/archive/2009/11/18/4830723.aspx