|
HSQLDB是一個(gè)輕量級(jí)的純Java開(kāi)發(fā)的開(kāi)放源代碼的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),其體積小,占用空間小,使用簡(jiǎn)單,支持內(nèi)存運(yùn)行方式等特點(diǎn)。可以在http://sourceforge.net/projects/hsqldb/files/下載最新的HSQLDB版本。我這里下載的是HSQLDB 1.8.13版本。下載完之后,把它解壓到任一目錄下,如E:\hsqldb下,完成安裝工作。 Hsqldb有四種運(yùn)行模式: 一、 內(nèi)存(Memory-Only)模式:所有的數(shù)據(jù)都將在內(nèi)存中完成,如果程序退出,則相應(yīng)的數(shù)據(jù)也將同時(shí)被銷毀。連接JDBC的實(shí)例為:jdbc:hsqldb:mem:dbname 二、 進(jìn)行(In-Process)模式:此模式從應(yīng)用程序啟動(dòng)數(shù)據(jù)庫(kù),由于所有的數(shù)據(jù)都將寫(xiě)到文件中,所以,即使程序退出,數(shù)據(jù)也不會(huì)被銷毀。In-Process不需要另外啟動(dòng),可以通過(guò)DriverManager.getConnection(jdbcUriName,”sa”,””);方式即可啟動(dòng)數(shù)據(jù)庫(kù)。連接JDBC的實(shí)例為: jdbc:hsqldb:file:/E:/hsqldb/data/dbname jdbc:hsqldb:file:/opt/db/dbname jdbc:hsqldb:file:dbname 三、 服務(wù)器模式:此模式下HSQLDB跟其它數(shù)據(jù)庫(kù)服務(wù)器一樣,需要通過(guò)服務(wù)器的形式來(lái)進(jìn)行啟動(dòng),可以通過(guò)java –cp ../lib/hsqldb.jar org.hsqldb.Server –database.0 testdb –dbname.0 testdbName的命令啟動(dòng)一個(gè)守護(hù)進(jìn)程。連接JDBC的實(shí)例為:jdbc:hsqldb:hsql://localhost:<port>/dbname 四、 Web服務(wù)器模式:此模式以WEB服務(wù)器的形式啟動(dòng),并通過(guò)HTTP協(xié)議接受客戶端命令。從1.7.2版本開(kāi)始,Web服務(wù)器模式的HSQLDB開(kāi)始支持事務(wù)處理。可以通過(guò)java –cp ../lib/hsqldb.jar org.hsqldb.WebServer –database.0 testdb –dbname.0 testdbname的命令來(lái)啟動(dòng)。
重點(diǎn)討論hsqldb服務(wù)器模式的啟動(dòng)方法和連接和實(shí)際java程序的JDBC連接情況。假設(shè)JDK已經(jīng)安裝到機(jī)器上,環(huán)境變量等都正確設(shè)置。 首先在E:\hsqldbTest目錄下建立兩個(gè)子目錄,data和lib目錄,data用來(lái)存放數(shù)據(jù),lib用來(lái)管理jar包。將解壓之后的hsqldb中的lib目錄下的hsqldb.jar文件拷貝到E:\hsqldbTest\lib目錄下。 1. 在hsqldbTest目錄下創(chuàng)建runServer.bat文件,其內(nèi)容為: cd data @java -classpath ../lib/hsqldb.jar org.hsqldb.Server
2. 保存runServer.bat文件,并雙擊運(yùn)行該文件,此時(shí)回彈出命令行窗口,如下圖,表示已啟動(dòng)HSQLDB數(shù)據(jù)庫(kù)。 ![]() 此時(shí),在data目錄下產(chǎn)生了三個(gè)文件,如: test.lck ——標(biāo)識(shí)數(shù)據(jù)庫(kù)鎖狀態(tài)。 test.log ——運(yùn)行數(shù)據(jù)庫(kù)產(chǎn)生的log信息,它將記錄每一個(gè)運(yùn)行和用戶操作環(huán)節(jié)。 test.properties——數(shù)據(jù)庫(kù)的配置信息,包括分配的內(nèi)存大小等,可更具需要修改。 注:如果在命令行窗口中按下[Ctrl] + [C]組合鍵,數(shù)據(jù)庫(kù)將退出并關(guān)閉。
3. 再創(chuàng)建runManager.bat文件,用來(lái)啟動(dòng)圖形界面管理工具,其內(nèi)容為: cd data @java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager
4. 保存runManager.bat文件,并雙擊文件,此時(shí)回彈出圖形界面(注意,在進(jìn)行這一不之前,必須確保第二步已執(zhí)行),如下圖。 ![]() Recent:將會(huì)列出最近的數(shù)據(jù)庫(kù)配置 Setting Name: 設(shè)置名稱,這里不需要填寫(xiě) Type:選擇服務(wù)器模式(HSQL Database Engine Server) Driver:驅(qū)動(dòng)名稱,不需要修改 URL:JDBC連接,無(wú)需修改 User:用戶名,根據(jù)需要設(shè)置 Password:密碼,根據(jù)需要設(shè)置
5. 點(diǎn)擊【OK】按鈕,即可連接到test數(shù)據(jù)庫(kù)。如下圖所示。 ![]() 此時(shí),我們可以在窗口中創(chuàng)建表等操作,例如,我們創(chuàng)建一個(gè)TBL_USERS的表。在菜單欄中選擇【COMMAND】->【CREATE TABLE】命令,此時(shí)在右下文本框中顯示創(chuàng)建表的命令,包括各式,支持的類型等。我們創(chuàng)建的TBL_USERS表結(jié)構(gòu)如下圖所示: ![]() 6. 點(diǎn)擊【Execute】按鈕,如果無(wú)語(yǔ)法錯(cuò)誤,SQL語(yǔ)句將正常執(zhí)行,此時(shí),選擇菜單欄中的【View】->【Refresh Tree】命令,左側(cè)欄中將顯示創(chuàng)建的TBL_USERS。如下圖所示。并且查看test.log文件,創(chuàng)建表的過(guò)程都將全部記錄。 ![]() 7. 另外還可以用DatabaseManagerSwing工具啟動(dòng)圖形界面。創(chuàng)建runManagerSwing.bat文件,內(nèi)容為: cd data @java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing 保存文件,雙擊該文件,將啟動(dòng)Swing圖形界面,如下圖所示,具體的操作過(guò)程和DatabaseManager工具類似,不再重復(fù)。 ![]()
以上就是啟動(dòng)hsqldb數(shù)據(jù)庫(kù)和創(chuàng)建表的整個(gè)過(guò)程,其它的功能可以通過(guò)多次聯(lián)系即可掌握。按照以上操作方式,hsqldb將自動(dòng)產(chǎn)生一個(gè)test的數(shù)據(jù)庫(kù)。但是有時(shí)候我們需要自己指定數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)訪問(wèn)名,數(shù)據(jù)庫(kù)訪問(wèn)端口等,該如何實(shí)現(xiàn)呢,很簡(jiǎn)單。只要在相對(duì)根目錄下創(chuàng)建一個(gè)server.properties文件即可。 創(chuàng)建自己制定的數(shù)據(jù)庫(kù): 1. 首先在E:\hsqldbTest目錄下創(chuàng)建一個(gè)server.properties文件,文件內(nèi)容為(注:在實(shí)際文件中,刪除后面的注釋內(nèi)容): server.port=9001 #指定端口號(hào)為9001 server.database.0=file:data/mydb # 將在data目錄下創(chuàng)建mydb數(shù)據(jù)庫(kù) server.dbname.=mydb #指定數(shù)據(jù)庫(kù)名,jdbc連接時(shí)就是用此名稱 server.silent=true 2. 在E:\hsqldbTest目錄下創(chuàng)建runServer2.bat文件,文件內(nèi)容為 @java -classpath lib/hsqldb.jar org.hsqldb.Server 3. 雙擊運(yùn)行runServer2.bat文件,將會(huì)在data目錄下創(chuàng)建mydb數(shù)據(jù)庫(kù),并啟動(dòng)數(shù)據(jù)庫(kù)。 4. 雙擊運(yùn)行已創(chuàng)建好的runManagerSwing.bat文件,打開(kāi)圖形管理界面,并設(shè)置連接到mydb數(shù)據(jù)庫(kù)中,如下圖所示: ![]() 5. 配置好選項(xiàng),點(diǎn)擊【OK】按鈕,即可連接到mydb數(shù)據(jù)庫(kù),在窗口中可以按照以前的步驟創(chuàng)建表,添加記錄等操作。
好了,以上就是整個(gè)hsqldb的安裝、啟動(dòng)、創(chuàng)建表等的全過(guò)程,在這里特別說(shuō)明的是,hsqldb.1.8.1.3是用JDK.1.5以上的版本的編譯的,所以,如果你使用的是低于jdk1.5的版本時(shí),可能出現(xiàn)異常情況,不能正常使用。另外,即使你安裝的jdk版本是1.5以上的,可能還會(huì)出現(xiàn)異常,該如何辦呢,此時(shí),確保你的hsqldb是在官方網(wǎng)站下載的,需要檢查你的java的環(huán)境變量,由于你的機(jī)器可能安裝有oracle,很有可能出現(xiàn)問(wèn)題,此時(shí)只需將%JAVA_HOME%\bin路徑放置在path路徑的最開(kāi)頭,這樣,就不會(huì)出現(xiàn)異常情況了。
接下來(lái),我們通過(guò)一個(gè)具體的java程序來(lái)連接建立好的mydb數(shù)據(jù)庫(kù),并且在mydb數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)TBL_USERS的表。并插入一條記錄。 1. 在E:\hsqldbTest目錄下創(chuàng)建一個(gè)HsqlDemo.java文件,內(nèi)容如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import org.hsqldb.jdbcDriver;
public class HsqlDemo { public static void main(String[] args) { try { Class.forName("org.hsqldb.jdbcDriver"); Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/mydb", "sa", ""); if (c != null) { System.out.println("Connected db success!"); String sql = "CREATE TABLE TBL_USERS(ID INTEGER, NAME VARCHAR, BIRTHDAY DATE);"; Statement st = c.createStatement(); st.execute(sql); sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES ('1', 'ADMIN', SYSDATE);"; st.executeUpdate(sql); if (st != null) { st.close(); } c.close(); } } catch(Exception e) { System.out.println("ERROR:failed to load HSQLDB JDBC driver."); e.printStackTrace(); return; } } }
2. 在E:\hsqldbTest目錄下建立一個(gè)runJava.bat文件,用來(lái)運(yùn)行HsqlDemo.java。內(nèi)容如下: @echo off set path=D:\Program Files\Java\jdk1.6.0_05\bin # jdk的路徑 javac -classpath lib/hsqldb.jar HsqlDemo.java java -cp lib/hsqldb.jar;./ HsqlDemo # 注意./ 后面的空格,./[空格] HsqlDemo
3. 確定mydb數(shù)據(jù)庫(kù)已經(jīng)啟動(dòng),如果沒(méi)有,運(yùn)行runServer2.bat,啟動(dòng)數(shù)據(jù)庫(kù)。 4. 運(yùn)行runJava.bat文件,運(yùn)行程序,如果無(wú)異常產(chǎn)生,說(shuō)明已正確執(zhí)行,此時(shí),可以在mydb.log文件中看到創(chuàng)建的TBL_USERS,插入的記錄,當(dāng)然,可以用圖形工具查看表。
OK,以上就是所有的hsqldb啟動(dòng)過(guò)程和連接jdbc的過(guò)程。 |