H2数据库使用

H2数据库使用

H2数据库介绍

H2的优势:

1、h2采用纯Java编写,因此不受平台的限制。

2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。

3、性能和功能的优势

H2和各数据库特征比较。

准备工作

1、h2-2011-04-04.zip  下载地址:http://www.
2、解压文件,这里以%H2_HOME%表示为解压的文件目录。运行%H2_HOME%\bin\h2.bat 将会自动打开下面网址。(请确认是否安装了jdk,并设置了JAVA_HOME环境变量)

http://192.168.140.1:8082/login.jsp?jsessionid=244e36a683f97f0d4f3b000f33530ed1

3、点击 connect ,登录。

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模式

3、新建Generic H2 (Embedded)数据库,指定:URL:

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 改为:
你也可以再创建新的数据库,默认都是保存在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("
   // 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();

}

内存模式(数据只保存在内存中)

public static void main(String[] a)

throws Exception {

Class.forName("org.h2.Driver");

Connection conn = DriverManager.

getConnection("
   // 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();

}

集群 / 高可用性

数据库支持简单的集群/高可用性机制。架构是:两个数据库服务运行在两台不同的计算机上,两台计算机有同样数据库的副本,如果两个服务器都处于运行状态,每个数据库操作都被在两台计算机上执行,如果一台服务器宕机(断电、硬件故障、网络故障等),另外一台计算机仍能提供服务,从这一刻开始,数据库操作仅在一台服务器上执行,直到另外一台服务器恢复运行。

集群仅能用于服务器模式(内嵌模式并不支持集群)。可以在数据库运行状态下恢复集群,但是要求在第二个数据库恢复期间没有应用在改变第一个数据库的数据,因此恢复集群是一个手工的过程。

初始化集群,使用下面的步骤:

·        创建数据库

·        使用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‘。

jdbc:h2:~/mem:test 也是可以的。如果是localhost必须启动服务。

数据库连接 URL说明

数据库支持多种连接模式和连接设置,不同的连接模式和连接设置是通过不同的URL来区分的,URL中的设置是不区分大小写。


Topic


URL Format and Examples


嵌入式(本地)连接


jdbc:h2:[file:][<path>]<databaseName>

jdbc:h2:~/test

jdbc:h2:file:/data/sample

jdbc:h2:file:C:/data/sample (Windows only)


内存数据库(私有)


jdbc:h2:mem:


内存数据库(被命名)


jdbc:h2:mem:<databaseName>

jdbc:h2:mem:test_mem


使用TCP/IP的服务器模式(远程连接)


jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>

jdbc:h2:tcp://localhost/~/test

jdbc:h2:tcp://dbserv:8084/~/sample


使用SSL/TLS的服务器模式(远程连接)


jdbc:h2:ssl://<server>[:<port>]/<databaseName>

jdbc:h2:ssl://secureserv:8085/~/sample;


使用加密文件


jdbc:h2:<url>;CIPHER=[AES|XTEA]

jdbc:h2:ssl://secureserv/~/testdb;CIPHER=AES

jdbc:h2:file:~/secure;CIPHER=XTEA


文件锁


jdbc:h2:<url>;FILE_LOCK={NO|FILE|SOCKET}

jdbc:h2:file:~/quickAndDirty;FILE_LOCK=NO

jdbc:h2:file:~/private;CIPHER=XTEA;FILE_LOCK=SOCKET


仅打开存在的数据库


jdbc:h2:<url>;IFEXISTS=TRUE

jdbc:h2:file:~/sample;IFEXISTS=TRUE


当虚拟机退出时并不关闭数据库


jdbc:h2:<url>;DB_CLOSE_ON_EXIT=FALSE


用户名和密码


jdbc:h2:<url>[;USER=<username>][;PASSWORD=<value>]

jdbc:h2:file:~/sample;USER=sa;PASSWORD=123


更新记入索引


jdbc:h2:<url>;LOG=2

jdbc:h2:file:~/sample;LOG=2


调试跟踪项设置


jdbc:h2:<url>;TRACE_LEVEL_FILE=<level 0..3>

jdbc:h2:file:~/sample;TRACE_LEVEL_FILE=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:zip:~/db.zip!/test


兼容模式


jdbc:h2:<url>;MODE=<databaseType>

jdbc:h2:~/test;MODE=MYSQL


自动重连接


jdbc:h2:<url>;AUTO_RECONNECT=TRUE

jdbc:h2:tcp://localhost/~/test;AUTO_RECONNECT=TRUE


自动混合模式


jdbc:h2:<url>;AUTO_SERVER=TRUE

jdbc:h2:~/test;AUTO_SERVER=TRUE


更改其他设置


jdbc:h2:<url>;<setting>=<value>[;<setting>=<value>...]

jdbc:h2:file:~/sample;TRACE_LEVEL_SYSTEM_OUT=3

时间: 2024-10-06 19:20:37

H2数据库使用的相关文章

h2数据库用于实例的重试模块

H2说明(参考http://www.importnew.com/17924.html) H2有3种运行方式 (1)嵌入式,数据库为单个文件. 启动实例的的时候,自动开启数据库,数据存储到单个文件中(连接加上;AUTO_SERVER=TRUE允许多个连接同时存在). conntionUrl = jdbc:h2:./TradeLocalDB;AUTO_SERVER=TRUE (2)内存运行,数据只运行在内存中 1.嵌入式内存模式,实例关闭,数据就丢失了,与map类似. conntionUrl = j

H2数据库使用 详解

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

H2数据库攻略

H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容.H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便. 一.引入Maven依赖 在maven中定义H2数据库的版本属性 <properties> <h2.version>1.3.172</h2.version></properties> 添加H2依赖 <dependency> &

DbUnit实践:Spring Test Dbunit,H2数据库

概述 Dbunit是一个基于JUnit的数据库集成测试框架.DBUnit 的设计理念就是在测试之前,给对象数据库植入我们需要的准备数据,最后,在测试完毕后,回溯到测试前的状态:它使数据库在测试过程之间处于一种已知状态,如果一个测试用例对数据库造成了破坏性影响,它可以帮助避免造成后面的测试失败或者给出错误结果. Spring Test DbUnit提供了Spring Test Framework与DBUnit之间的集成.使用Spring Test DbUnit提供了注解驱动的数据库集成测试方式.

H2数据库

1.Windows下面有EXE的安装包,安装之后可以通过浏览器访问791.168.0.1:8082来进行访问 2.在登录页面的url域中填写H2数据库的文件夹路径,如果没有,则指定目标文件夹即可,H2工具将会自动创建数据库文件. 3.默认密码sa/sa 4.h2链接字符串的最后不是文件夹,而是文件名.比如d:/tmp/rwb,说的是tmp文件夹下面的rwb.db.mv.db/rwb.db.trace.db 5.开发需要引用jar包,在安装目录的bin文件夹下面:源码如下图,jdbcConnect

java H2数据库使用并实现增删改查功能

原文:java H2数据库使用并实现增删改查功能 代码下载地址:http://www.zuidaima.com/share/1550463278058496.htm package com.zuidaima.h2sql.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.St

Java嵌入式数据库H2学习总结(一)——H2数据库入门

一.H2数据库介绍 常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL.其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的客户端和服务器端. H2的优势: 1.h2采用纯Java编写,因此不受平台的限制. 2.h2只有一个jar文件,十分适合作为嵌入式数据库试用. 3.h2提供了一个十分方便的web控制台用于操作和管理数据库内容. 二.H2数据库下载和安装 2.1.H2数据库下载 H2数据库下载地址:http://ww

Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库

H2作为一个嵌入型的数据库,它最大的好处就是可以嵌入到我们的Web应用中,和我们的Web应用绑定在一起,成为我们Web应用的一部分.下面来演示一下如何将H2数据库嵌入到我们的Web应用中. 一.搭建测试环境和项目 1.1.搭建JavaWeb测试项目 创建一个[H2DBTest]JavaWeb项目,找到H2数据库的jar文件,如下图所示: H2数据库就一个jar文件,这个Jar文件里面包含了使用JDBC方式连接H2数据库时使用的驱动类,将"h2-1.4.183.jar"加入到[H2DBT

Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库

一.搭建测试环境和项目 1.1.搭建JavaWeb测试项目 创建一个[H2DBTest]JavaWeb项目,找到H2数据库的jar文件,如下图所示: H2数据库就一个jar文件,这个Jar文件里面包含了使用JDBC方式连接H2数据库时使用的驱动类,将"h2-1.4.183.jar"加入到[H2DBTest]项目中,如下图所示: 1.2.开启H2数据库 进入到h2\bin目录,如下图所示: 确保H2数据库使用的8082端口没有被其他应用程序占用,正常启动之后输入"http://