【DataBase】H2 DateBase的簡單使用


H2介紹

  H2是一個開源的嵌入式數據庫引擎,采用java語言編寫,不受平台的限制,同時H2提供了一個十分方便的web控制台用於操作和管理數據庫內容。

  H2還提供兼容模式,可以兼容一些主流的數據庫,因此采用H2作為開發期的數據庫非常方便。

  官網地址:http://www.h2database.com

  H2是Java SQL數據庫。H2的主要特點是:

  • 非常快,開源,JDBC API
  • 嵌入式和服務器模式; 內存數據庫
  • 基於瀏覽器的Console應用
  • 占地面積小:大約2 MB的jar文件大小

  H2用途

    H2最大的用途在於可以同應用程序打包在一起發布,這樣可以非常方便地存儲少量結構化數據。

    它的另一個用途是用於單元測試。啟動速度快,而且可以關閉持久化功能,每一個用例執行完隨即還原到初始狀態。

    H2的第三個用處是作為緩存,作為NoSQL的一個補充。當某些場景下數據模型必須為關系型,可以拿它當Memcached使,作為后端MySQL/Oracle的一個緩沖層,緩存一些不經常變化但需要頻繁訪問的數據,比如字典表、權限表。不過這樣系統架構就會比較復雜了。

  H2運行模式

    H2支持三種不同的運行模式,以適用於更多不同的應用場景。

  1、嵌入式模式:

    嵌入式模式下,應用與H2運行於同一個JVM中,H2被應用啟動。該模式也是性能最好的模式,也是官方推薦的模式。

  2、服務器模式

    服務器模式下,H2被H2 Server啟動(獨立於應用的JVM),應用與數據分離,應用使用遠程連接(如JDBC)訪問數據庫。類似於傳統數據庫的部署,服務器可以與應用部署與同一台機器,也可以部署與另一台機器。

    實際上,H2 Server本身也是使用嵌入式模式來啟動運行H2 Database的。顯然,由於服務器模式是通過遠程連接訪問數據,其性能也要低於嵌入式模式。

  3、混合模式

    該模式是嵌入式模式與混合模式的融合。一個應用啟動嵌入式模式的H2 Database,其他應用可以將其作為服務器模式來遠程訪問。

H2簡單使用

  1、H2數據庫下載,打開官網(http://www.h2database.com)下載

    

  2、解壓下載包,即可使用,解壓后目錄如下

    h2
    |---bin
    | |---h2-1.1.116.jar   //H2數據庫的jar包(驅動也在里面)
    | |---h2.bat //Windows控制台啟動腳本
    | |---h2.sh //Linux控制台啟動腳本
    | |---h2w.bat //Windows控制台啟動腳本(不帶黑屏窗口)
    |---docs //H2數據庫的幫助文檔(內有H2數據庫的使用手冊)
    |---service //通過wrapper包裝成服務。
    |---src //H2數據庫的源代碼
    |---build.bat //windows構建腳本
    |---build.sh //linux構建腳本

  3、windows環境下運行h2.bat,linux環境下運行h2.sh,打開控制台

  4、windows環境下,運行文件后自動打開瀏覽器,地址:http://本地ip:8082

    

  5、選擇中文語言,並點擊連接,自動創建test數據庫,數據庫文件在~目錄中,~代表用戶自己目錄

    

  6、復制測試腳本sql,並執行

    

    7、運行結果如下:

      

H2使用JDBC連接

  1、運行

  2、新建maven項目,引入jar包

1 <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
2 <dependency>
3     <groupId>com.h2database</groupId>
4     <artifactId>h2</artifactId>
5     <version>1.4.199</version>
6 </dependency>

  3、編輯JDBC測試類

 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 /**
11  * Hello world!
12  *
13  */
14 public class App {
15     public static void main(String[] args) throws SQLException, ClassNotFoundException {
16 
17         // 加載H2 DB的JDBC驅動
18         Class.forName("org.h2.Driver");
19 
20         // 鏈接數據庫,自動在~創建數據庫test,得到聯接對象 connection
21         String url = "jdbc:h2:~/test";
22         Connection con = DriverManager.getConnection(url, "sa", "");
23 
24         // 新建數據表
25         String ctreateTable = "DROP TABLE test IF EXISTS; create table test(id integer,name VARCHAR(22) )";
26         Statement createStatement = con.createStatement();
27         long f1 = createStatement.executeUpdate(ctreateTable);
28         System.out.println("創建表:" + f1);
29 
30         // 插入數據
31         String insertSql = "INSERT INTO test VALUES(1,'小明')";
32         Statement insertStatement = con.createStatement();
33         long f2 = insertStatement.executeUpdate(insertSql);
34         System.out.println("插入數據:" + f2);
35 
36         // 查詢數據
37         String selectSql = "select id,name from test";
38         PreparedStatement prepareStatement = con.prepareStatement(selectSql);
39         // 發送SQL 返回一個ResultSet
40         ResultSet rs = prepareStatement.executeQuery();
41 
42         // 編歷結果集
43         while (rs.next())// 從數據庫的取一行數據,是否還有下一行
44         {
45             int id = rs.getInt(1); // 從1開始
46             String name = rs.getString(2);
47             System.out.println("id:" + id + "\t名稱:" + name);
48         }
49 
50         // 關閉連接
51         con.close();
52 
53     }
54 }

  4、運行測試類,結果如下:

    

 

 

 

  


免責聲明!

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



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