【DataBase】Hsqldb的簡單使用


介紹

  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、運行測試類,結果如下:

    

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM