介紹
HSQLDB是一個開放源代碼的JAVA數據庫,其具有標准的SQL語法和JAVA接口,它可以自由使用和分發,非常簡潔和快速的。具有Server模式,每個程序需要不同的命令來運行。
HyperSQL數據庫(HSQLDB)是一種現代關系數據庫系統。版本2.4.1是全新版本2代碼的最新版本。從頭開始編寫,遵循國際ISO SQL:2011標准,它支持完整的經典功能集,以及存儲過程和觸發器等可選功能。
HyperSQL版本2.4.1與Java 8或更高版本兼容。還可以使用JDK 6或JDK 5編譯的HSQLDB jar版本。這些版本編號為2.3.6,以區分功能差異。
HyperSQL用於數據庫應用程序的開發,測試和部署。
官網地址:http://hsqldb.org/
HSQLDB Jar
HSQLDB jar包hsqldb.jar位於ZIP包的/ lib目錄中,包含多個組件和程序。
Hsqldb jar包的組件
-
HyperSQL RDBMS引擎(HSQLDB)
-
HyperSQL JDBC驅動程序
-
數據庫管理器(GUI數據庫訪問工具,帶Swing和AWT版本)
HyperSQL RDBMS和JDBC驅動程序提供核心功能。DatabaseManagers是通用數據庫訪問工具,可以與任何具有JDBC驅動程序的數據庫引擎一起使用。
另一個jar,sqltool.jar,包含Sql Tool,命令行數據庫訪問工具。這是一個通用的命令行數據庫訪問工具,也可以與其他數據庫引擎一起使用。
運行數據庫訪問工具
這些工具用於交互式用戶訪問數據庫,包括創建數據庫,插入或修改數據或查詢數據庫。所有工具都以Java程序的正常方式運行。在以下示例中,將執行數據庫管理器的Swing版本。本hsqldb.jar
所在的目錄中 ../lib
相對於當前目錄。
java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
如果hsqldb.jar
在當前目錄中,該命令將更改為:
java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
Hsqldb工具的主要類
-
org.hsqldb.util.DatabaseManager
-
org.hsqldb.util.DatabaseManagerSwing
當工具啟動並運行時,您可以連接到數據庫(可能是新數據庫)並使用SQL命令來訪問和修改數據。
工具可以使用命令行參數。您可以添加命令行參數--help以獲取這些工具的可用參數列表。
雙擊HSQLDB jar將啟動DatabaseManagerSwing應用程序
目錄數據的類型
-
mem:完全存儲在RAM中 - 沒有任何超出JVM進程生命周期的持久性
-
file:存儲在filesystem文件中
-
res:存儲在Java資源中,例如Jar,並且始終是只讀的
運行模式
一、內存(Memory-Only)模式:所有的數據都將在內存中完成,如果程序退出,則相應的數據也將同時被銷毀。
連接JDBC的實例為:jdbc:hsqldb:mem:dbname
二、進行(In-Process)模式:此模式從應用程序啟動數據庫,由於所有的數據都將寫到文件中,所以,即使程序退出,數據也不會被銷毀。In-Process 不需要另外啟動,可以通過 DriverManager.getConnection("jdbcUriName","username","password"); 方式即可啟動數據庫。
連接 JDBC 的實例為:
jdbc:hsqldb:file:/E:/hsqldb/data/dbname
jdbc:hsqldb:file:/opt/db/dbname
jdbc:hsqldb:file:dbname
三、服務器模式:此模式下 HSQLDB 跟其它數據庫服務器一樣,需要通過服務器的形式來進行啟動
通過命令:java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:testdb --dbname.0 testdbname
啟動一個守護進程。
連接 JDBC 的實例為:jdbc:hsqldb:hsql://localhost:port/testdbname
四、Web服務器模式:此模式以WEB服務器的形式啟動,並通過HTTP協議接受客戶端命令。從1.7.2版本開始,Web服務器模式的 HSQLDB 開始支持事務處理。
啟動命令:java -cp ../lib/hsqldb.jar org.hsqldb.server.WebServer –database.0 testdb –dbname.0 testdbname
連接 JDBC 的實例為:jdbc:hsqldb:http://localhost:port/testdbname
當以二三四模式運行時,會在運行目錄下產生三個文件
test.lck ——標識數據庫鎖狀態。
test.log ——運行數據庫產生的log信息,它將記錄每一個運行和用戶操作環節。
test.properties——數據庫的配置信息,包括分配的內存大小等,可更具需要修改。
簡單使用
需要java環境
內存模式使用(自帶工具測試)
1、在官網下載jar包(hsqldb-2.4.1.jar ),雙擊jar包運行hsqldb數據庫訪問工具,如下:
2、默認連接到內存模式的hsqldb數據庫(.),可以不修改任何東西,也可以修改url,修改內存模式運行的數據庫名,
url修改為:jdbc:hsqldb:mem:db,此內存模式運行的數據庫名(db),數據庫會自動創建在內存中
3、點擊ok,進入操作界面,如下圖:
4、選擇測試腳本(command-》test script)
5、運行Execute SQL
內存模式使用(JDBC測試)
1、新建Maven工程,引入jar包
2、編輯JDBC,java測試類
1 package com.test.hsqldb; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 10 public class TestHsqldbMem { 11 12 13 public static void main(String[] args) throws SQLException, ClassNotFoundException { 14 15 // 加載HSQL DB的JDBC驅動 16 Class.forName("org.hsqldb.jdbc.JDBCDriver"); 17 18 // 自動創建數據庫,得到聯接對象 connection 19 String url="jdbc:hsqldb:mem:db"; 20 Connection con=DriverManager.getConnection(url, "sa", ""); 21 22 // 新建數據表 23 String ctreateTable="create table test(id integer,name VARCHAR(22) )"; 24 Statement createStatement = con.createStatement(); 25 long f1 = createStatement.executeUpdate(ctreateTable); 26 System.out.println("創建表:" + f1); 27 28 // 插入數據 29 String insertSql = "INSERT INTO test VALUES(1,'小明')"; 30 Statement insertStatement = con.createStatement(); 31 long f2 = insertStatement.executeUpdate(insertSql); 32 System.out.println("插入數據:" + f2); 33 34 // 查詢數據 35 String selectSql = "select id,name from test"; 36 PreparedStatement prepareStatement = con.prepareStatement(selectSql); 37 // 發送SQL 返回一個ResultSet 38 ResultSet rs=prepareStatement.executeQuery(); 39 40 // 編歷結果集 41 while(rs.next())//從數據庫的取一行數據,是否還有下一行 42 { 43 int id=rs.getInt(1); //從1開始 44 String name=rs.getString(2); 45 System.out.println("id:"+id+"\t名稱:"+name); 46 } 47 48 // 關閉連接 49 con.close(); 50 51 } 52 53 }
3、運行測試類,結果如下: