H2數據庫使用

 經常使用的開源數據庫:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB相似,十分適合做爲嵌入式數據庫使用,其它的數據庫大部分都須要安裝獨立的客戶端和服務器端。
H2的優點:
一、h2採用純Java編寫,所以不受平臺的限制。
二、h2只有一個jar文件,十分適合做爲嵌入式數據庫試用。
三、性能和功能的優點 html

H2比HSQLDB的最大的優點就是h2提供了一個十分方便的web控制檯用於操做和管理數據庫內容,這點比起HSQLDB的swing和awt控制檯實在好用多了。 java

H2和各數據庫特徵比較。
linux

準備工做 web


一、h2-2011-04-04.zip  下載地址:http://www.h2database.com/html/download.html
二、解壓文件,這裏以%H2_HOME%表示爲解壓的文件目錄。運行%H2_HOME%\bin\h2.bat 將會自動打開下面網址。(請確認是否安裝了jdk,並設置了JAVA_HOME環境變量)
http://192.168.140.1:8082/login.jsp?jsessionid=244e36a683f97f0d4f3b000f33530ed1 sql

三、點擊 connect ,登陸。 數據庫

四、執行上圖中紅色部分sql語句,成功建立test表。 windows

由於沒有指定數據庫文件位置,會自動輸出到輸出到C:\Users\Administrator下。 服務器

H2文件結構 session


%H2_HOME%
-h2
  -bin
    h2-1.3.154.jar //jar包
    h2.bat         //Windows控制檯啓動腳本
    h2.sh          //Linux控制檯啓動腳本
    h2w.bat        //Windows控制檯啓動腳本(不帶黑屏窗口)
  +docs 幫助文檔
  +service //經過wrapper包裝成服務。
  +src  //源代碼
  build.bat  windows構建腳本
  build.sh   linux構建腳本 app

H2的使用
支持Embedded,server和in-memory模式以及內存模式。
Embedded模式

一、新建java project工程 H2Test。

二、%H2_HOME%\bin\h2-1.3.154.jar 複製到 \H2Test\lib下,並加入工程引用。
三、新建Generic H2 (Embedded)數據庫,指定:JDBC ,而後執行上面的test sql語句,來建立一個test表。

四、新建 TestH2類 主要代碼

public static void main(String[] a)
      throws Exception {
   Class.forName("org.h2.Driver");
   Connection conn = DriverManager.
       getConnection("jdbc:h2:E:\\research\\workspace\\H2Test\\db\\test", "sa", "");
   // add application code here
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("SELECT * FROM TEST ");   
      while(rs.next()) {   
       System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
      }
   conn.close();
 }


控制檯打印出:1,Hi

server模式

一、直接將jdbc url 改成:jdbc:h2:tcp://localhost/~/test  就好了。由於咱們在上面第一步的時候已經在C:\Users\Administrator建立了test數據庫。
你也能夠再建立新的數據庫,默認都是保存在C:\Users\Administrator下的。
注意:你必須啓動服務:%H2_HOME%\bin\h2.bat 或者 以服務模式啓動:%H2_HOME%\service\0_run_server_debug.bat ,裏面有好幾個腳本把H2部署爲服務模式。每次機器啓動後自動啓動H2服務。
二、新建 TestServerH2類 主要代碼

public static void main(String[] a)
    throws Exception {
   Class.forName("org.h2.Driver");
   Connection conn = DriverManager.
       getConnection("jdbc:h2:tcp://localhost/~/test", "sa", "");
   // add application code here
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("SELECT * FROM TEST ");   
    while(rs.next()) {   
     System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
    }
   conn.close();
 }

運行的結果和上面同樣。

內存模式(數據只保存在內存中)

一、新建 TestMemH2類 主要代碼

public static void main(String[] a)
    throws Exception {
   Class.forName("org.h2.Driver");
   Connection conn = DriverManager.
       getConnection("jdbc:h2:tcp://localhost/mem:test2", "sa", "");
   // add application code here
   Statement stmt = conn.createStatement();

   stmt.executeUpdate("CREATE TABLE TEST_MEM(ID INT PRIMARY KEY,NAME VARCHAR(255));");
   stmt.executeUpdate("INSERT INTO TEST_MEM VALUES(1, 'Hello_Mem');");
   ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_MEM");   
    while(rs.next()) {   
     System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
    }
   conn.close();
 }

控制檯打印出:1,Hello_Mem

二、上面的 URL 改成 jdbc:h2:~/mem:test 也是能夠的。若是是localhost必須啓動服務。

資源下載

H2Test工程

相關文章
相關標籤/搜索