控制臺打印出:1,Hi
server模式
1、直接將jdbc url 改為:jdbc:h2:tcp://localhost/~/test 就行了。因為我們在上面第一步的時候已經(jīng)在C:\Users\Administrator創(chuàng)建了test數(shù)據(jù)庫。
你也可以再創(chuàng)建新的數(shù)據(jù)庫,默認都是保存在C:\Users\Administrator下的。
注意:你必須啟動服務(wù):%H2_HOME%\bin\h2.bat 或者 以服務(wù)模式啟動:%H2_HOME%\service\0_run_server_debug.bat ,里面有好幾個腳本把H2部署為服務(wù)模式。每次機器啟動后自動啟動H2服務(wù)。
2、新建 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();
}
運行的結(jié)果和上面一樣。
內(nèi)存模式(數(shù)據(jù)只保存在內(nèi)存中)
1、新建 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
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
集群 / 高可用性
數(shù)據(jù)庫支持簡單的集群/高可用性機制。架構(gòu)是:兩個數(shù)據(jù)庫服務(wù)運行在兩臺不同的計算機上,兩臺計算機有同樣數(shù)據(jù)庫的副本,如果兩個服務(wù)器都處于運行狀態(tài),每個數(shù)據(jù)庫操作都被在兩臺計算機上執(zhí)行,如果一臺服務(wù)器宕機(斷電、硬件故障、網(wǎng)絡(luò)故障等),另外一臺計算機仍能提供服務(wù),從這一刻開始,數(shù)據(jù)庫操作僅在一臺服務(wù)器上執(zhí)行,直到另外一臺服務(wù)器恢復運行。
集群僅能用于服務(wù)器模式(內(nèi)嵌模式并不支持集群)??梢栽跀?shù)據(jù)庫運行狀態(tài)下恢復集群,但是要求在第二個數(shù)據(jù)庫恢復期間沒有應用在改變第一個數(shù)據(jù)庫的數(shù)據(jù),因此恢復集群是一個手工的過程。
初始化集群,使用下面的步驟:
· 創(chuàng)建數(shù)據(jù)庫
· 使用CreateCluster工具創(chuàng)建一個數(shù)據(jù)庫福分到另外的地方,并且初始化集群,這樣就得到了同樣數(shù)據(jù)的兩個數(shù)據(jù)庫
· 啟動兩個數(shù)據(jù)庫服務(wù)(每個數(shù)據(jù)庫的副本)
· 現(xiàn)在可以通過應用客戶端連接到數(shù)據(jù)庫
使用創(chuàng)建集群工具
要了解集群如何工作,請嘗試下面的例子,在這個例子里,兩個數(shù)據(jù)庫駐留在同一臺計算機上,但通常,兩個數(shù)據(jù)庫在不同的計算機上。
· 創(chuàng)建兩個目錄:server1,server2。每個目錄將模擬一臺計算機
· 在第一個目錄啟動TCP服務(wù),你可以運行下面的命令:
· java org.h2.tools.Server
· -tcp-tcpPort 9101
· -baseDirserver1
· 在第二個目錄啟動TCP服務(wù),模擬第二個服務(wù)器(冗余運行),你能使用下面的命令:
· java org.h2.tools.Server
· -tcp-tcpPort 9102
· -baseDirserver2
· 使用 CreateCluster 工具初始化集群,如果數(shù)據(jù)庫不存在,將創(chuàng)建一個新的空數(shù)據(jù)庫,運行下面命令行:
· java org.h2.tools.CreateCluster
· -urlSourcejdbc:h2:tcp://localhost:9101/~/test
· -urlTargetjdbc:h2:tcp://localhost:9102/~/test
· -user sa
· -serverList localhost:9101,localhost:9102
· 應用或者是H2控制臺可以通過下面的JDBC的URL連接數(shù)據(jù)庫:jdbc:h2:tcp://localhost:9101,localhost:9102/~/test
· 如果你停止一個服務(wù)(通過殺進程),你注意到另一個機器繼續(xù)工作,數(shù)據(jù)庫仍能提供訪問。
· 恢復集群,你需要先刪掉宕機的數(shù)據(jù)庫,然后重啟宕機的數(shù)據(jù)庫的服務(wù),再重新運行CreateCluster集群工具。
檢測運行狀態(tài)下的集群
查找哪些節(jié)點當前正在運行,通過執(zhí)行下面的SQL語句:
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERENAME='CLUSTER'
結(jié)果返回為 '' (兩個單引號),說明集群模式被屏蔽,否則,集群服務(wù)器列表將被單引號包括著返回,如'server1:9191,server2:9191'。
2、上面的 URL 改為 jdbc:h2:~/mem:test 也是可以的。如果是localhost必須啟動服務(wù)。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
數(shù)據(jù)庫連接 URL說明
數(shù)據(jù)庫支持多種連接模式和連接設(shè)置,不同的連接模式和連接設(shè)置是通過不同的URL來區(qū)分的,URL中的設(shè)置是不區(qū)分大小寫。
Topic |
URL Format and Examples |
嵌入式(本地)連接 |
jdbc:h2:[file:][ |
內(nèi)存數(shù)據(jù)庫(私有) |
jdbc:h2:mem: |
內(nèi)存數(shù)據(jù)庫(被命名) |
jdbc:h2:mem: |
使用TCP/IP的服務(wù)器模式(遠程連接) |
jdbc:h2:tcp:// |
使用SSL/TLS的服務(wù)器模式(遠程連接) |
jdbc:h2:ssl:// |
使用加密文件 |
jdbc:h2:;CIPHER=[AES|XTEA] |
文件鎖 |
jdbc:h2:;FILE_LOCK={NO|FILE|SOCKET} |
僅打開存在的數(shù)據(jù)庫 |
jdbc:h2:;IFEXISTS=TRUE |
當虛擬機退出時并不關(guān)閉數(shù)據(jù)庫 |
jdbc:h2:;DB_CLOSE_ON_EXIT=FALSE |
用戶名和密碼 |
jdbc:h2:[;USER=][;PASSWORD= |
更新記入索引 |
jdbc:h2:;LOG=2 |
調(diào)試跟蹤項設(shè)置 |
jdbc:h2:;TRACE_LEVEL_FILE= |
忽略位置參數(shù)設(shè)置 |
jdbc:h2:;IGNORE_UNKNOWN_SETTINGS=TRUE |
指定文件讀寫模式 |
jdbc:h2:;ACCESS_MODE_LOG=rws;ACCESS_MODE_DATA=rws |
在Zip文件中的數(shù)據(jù)庫 |
jdbc:h2:zip: |
兼容模式 |
jdbc:h2:;MODE= |
自動重連接 |
jdbc:h2:;AUTO_RECONNECT=TRUE |
自動混合模式 |
jdbc:h2:;AUTO_SERVER=TRUE |
更改其他設(shè)置 |
jdbc:h2:; |
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com