H2 database的使用
H2最完整的资料下载地址:
http://download.csdn.net/detail/yixiaoping/5956595
H2数据库使用
H2数据库介绍
常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端。
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、性能和功能的优势
H2比HSQLDB的最大的优势就是h2提供了一个十分方便的web控制台用于操作和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。
H2和各数据库特征比较。
准备工作
1、h2-2011-04-04.zip 下载地址:http://www.h2database.com/html/download.html
2、解压文件,这里以%H2_HOME%表示为解压的文件目录。运行%H2_HOME%\bin\h2.bat 将会自动打开下面网址。(请确认是否安装了jdk,并设置了JAVA_HOME环境变量)
http://192.168.140.1:8082/login.jsp?jsessionid=244e36a683f97f0d4f3b000f33530ed1

3、点击 connect ,登录。

4、执行上图中红色部分sql语句,成功创建test表。

因为没有指定数据库文件位置,会自动输出到输出到C:\Users\Administrator下。

H2文件结构
%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构建脚本
H2的使用
支持Embedded,server和in-memory模式以及内存模式。
Embedded模式
1、新建java project工程 H2Test。

2、%H2_HOME%\bin\h2-1.3.154.jar 复制到 \H2Test\lib下,并加入工程引用。
3、新建Generic H2 (Embedded)数据库,指定:JDBC URL:jdbc:h2:E:\research\workspace\H2Test\db\test,然后执行上面的test sql语句,来创建一个test表。

4、新建 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模式
1、直接将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服务。
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();
}
运行的结果和上面一样。
内存模式(数据只保存在内存中)
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

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
集群 / 高可用性
数据库支持简单的集群/高可用性机制。架构是:两个数据库服务运行在两台不同的计算机上,两台计算机有同样数据库的副本,如果两个服务器都处于运行状态,每个数据库操作都被在两台计算机上执行,如果一台服务器宕机(断电、硬件故障、网络故障等),另外一台计算机仍能提供服务,从这一刻开始,数据库操作仅在一台服务器上执行,直到另外一台服务器恢复运行。
集群仅能用于服务器模式(内嵌模式并不支持集群)。可以在数据库运行状态下恢复集群,但是要求在第二个数据库恢复期间没有应用在改变第一个数据库的数据,因此恢复集群是一个手工的过程。
初始化集群,使用下面的步骤:
· 创建数据库
· 使用CreateCluster工具创建一个数据库福分到另外的地方,并且初始化集群,这样就得到了同样数据的两个数据库
· 启动两个数据库服务(每个数据库的副本)
· 现在可以通过应用客户端连接到数据库
使用创建集群工具
要了解集群如何工作,请尝试下面的例子,在这个例子里,两个数据库驻留在同一台计算机上,但通常,两个数据库在不同的计算机上。
· 创建两个目录:server1,server2。每个目录将模拟一台计算机
· 在第一个目录启动TCP服务,你可以运行下面的命令:
· java org.h2.tools.Server
· -tcp-tcpPort 9101
· -baseDirserver1
· 在第二个目录启动TCP服务,模拟第二个服务器(冗余运行),你能使用下面的命令:
· java org.h2.tools.Server
· -tcp-tcpPort 9102
· -baseDirserver2
· 使用 CreateCluster 工具初始化集群,如果数据库不存在,将创建一个新的空数据库,运行下面命令行:
· 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连接数据库:jdbc:h2:tcp://localhost:9101,localhost:9102/~/test
· 如果你停止一个服务(通过杀进程),你注意到另一个机器继续工作,数据库仍能提供访问。
· 恢复集群,你需要先删掉宕机的数据库,然后重启宕机的数据库的服务,再重新运行CreateCluster集群工具。
检测运行状态下的集群
查找哪些节点当前正在运行,通过执行下面的SQL语句:
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERENAME='CLUSTER'
结果返回为 '' (两个单引号),说明集群模式被屏蔽,否则,集群服务器列表将被单引号包括着返回,如'server1:9191,server2:9191'。
2、上面的 URL 改为 jdbc:h2:~/mem:test 也是可以的。如果是localhost必须启动服务。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
数据库连接 URL说明
数据库支持多种连接模式和连接设置,不同的连接模式和连接设置是通过不同的URL来区分的,URL中的设置是不区分大小写。
|
Topic |
URL Format and Examples |
|
jdbc:h2:[file:][<path>]<databaseName> |
|
|
jdbc:h2:mem: |
|
|
jdbc:h2:mem:<databaseName> |
|
|
使用TCP/IP的服务器模式(远程连接) |
jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName> |
|
jdbc:h2:ssl://<server>[:<port>]/<databaseName> |
|
|
jdbc:h2:<url>;CIPHER=[AES|XTEA] |
|
|
jdbc:h2:<url>;FILE_LOCK={NO|FILE|SOCKET} |
|
|
jdbc:h2:<url>;IFEXISTS=TRUE |
|
|
jdbc:h2:<url>;DB_CLOSE_ON_EXIT=FALSE |
|
|
jdbc:h2:<url>[;USER=<username>][;PASSWORD=<value>] |
|
|
jdbc:h2:<url>;LOG=2 |
|
|
jdbc:h2:<url>;TRACE_LEVEL_FILE=<level 0..3> |
|
|
jdbc:h2:<url>;IGNORE_UNKNOWN_SETTINGS=TRUE |
|
|
jdbc:h2:<url>;ACCESS_MODE_LOG=rws;ACCESS_MODE_DATA=rws |
|
|
在Zip文件中的数据库 |
jdbc:h2:zip:<zipFileName>!/<databaseName> |
|
jdbc:h2:<url>;MODE=<databaseType> |
|
|
jdbc:h2:<url>;AUTO_RECONNECT=TRUE |
|
|
jdbc:h2:<url>;AUTO_SERVER=TRUE |
|
|
jdbc:h2:<url>;<setting>=<value>[;<setting>=<value>...] |
H2 database的使用的更多相关文章
- H2 Database入门
H2 Database做为轻量级的内嵌数据库,功能十分强大,而且运行时只需要一个jar包即可,下表是官网的描述: 更详细的对比见官网页面: http://www.h2database.com/html ...
- H2 Database Engine
http://www.h2database.com/html/main.html H2 Database Engine Welcome to H2, the Java SQL database. Th ...
- [Spring boot] Integrating with h2 database
In pom.xml add dependency: <dependencies> <dependency> <groupId>org.springframewor ...
- Spring Boot + Mybatis + H2 database数据库
H2 Database H2 由纯 Java 编写的开源关系数据库,可以直接嵌入到应用程序中,不受平台约束,便于测试. h2数据库特点 (1)性能.小巧 (2)同时支持网络版和嵌入式版本,另外还提供了 ...
- Spring Boot with H2 Database
Learn to configure H2 database with Spring boot to create and use an in-memory database in runtime, ...
- H2 database 应用
以前对内存表的引用一直采用sqllite,由于sqllite对字段的局限性无法满足需要.后来对h2 有了一定青睐做了下应用.下面对h2进行介绍. 1. H2数据库引擎 H2数据库由Java编写的,它可 ...
- java:如何用代码控制H2 Database启动
1.纯手动start/stop package com.cnblogs.yjmyzz.h2; import java.sql.Connection; import java.sql.DriverMan ...
- h2 database
java -cp h2-1.4.187.jar org.h2.tools.Shell -url jdbc:h2:file:~/.h2/hzhssh -user sa 如果有个数据库的文件名为:hzhs ...
- H2 database 操作操作内存表
本例开发工具为 NetBeans,使用b2前提安装jdk. 第一步:在官网下载驱动包 :http://www.h2database.com ,本例版本为: h2-1.4.192.jar 第二步:安装开 ...
随机推荐
- 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia
SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...
- mysql学习之-密码管理(默认密码,修改密码,解决忘记密码)
1. mysql安装后默认没有密码,初始化安装后默认密码登录,需要马上修改root密码.[root@mysql ~]# cat /root/.mysql_secret --查看root账号密码# ...
- 在jQuery EasyUI中实现对DataGrid进行编辑
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 阿里云安装nginx 和 php-fpm
yum install yum-priorities -y rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-releas ...
- mysql 索引过长1071-max key length is 767 byte
问题 create table: Specified key was too long; max key length is 767 bytes 原因 数据库表采用utf8编码,其中varchar ...
- web的各种前端打印方法之CSS控制网页打印样式
来源:http://www.jb51.net/web/70358.html CSS控制网页打印样式: 使用CSS控制打印样式,握刚刚使用时一塌糊涂,根本不知道CSS中的midia的作用是什么,问到别人 ...
- bing统计【转自CSDN博客】
文章来源:http://blog.csdn.net/aa512690069/article/details/17918799 其原文是微软一个小题目:http://hero.csdn.net/Ques ...
- wikioi 1202 求和(求n个数的和)
/*============================================================= 1202 求和 题目描述 Description 求n个数的和 输入描述 ...
- 通过CSS禁用页面模块的复制和粘贴功能
样式代码: -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -khtml-user-select: ...
- css3写出0.5px的边框
一说到0.5px的边框,我们一般认为是不行的,因为在ps中0.5px的线也是做不出来的,这个计算机的像素有关系. 废话不多说了,0.5px 其实用的是css3新特性,box-shadow:阴影设置 代 ...