转自: https://blog.csdn.net/fanpeizhong/article/details/73543260

说明

  • H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
  • H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。
  • 它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。
  • H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了

一、产品优势

  • 纯Java编写,不受平台的限制;
  • 只有一个jar文件,适合作为嵌入式数据库使用;
  • h2提供了一个十分方便的web控制台用于操作和管理数据库内容;
  • 功能完整,支持标准SQL和JDBC。麻雀虽小五脏俱全;
  • 支持内嵌模式、服务器模式和集群。

二、下载和安装

2.1 下载

H2数据库下载地址:http://www.h2database.com/html/download.html

选第二个。Windows、Linux下都可以直接解压缩就用,符合永远中二中年开发者的使用习惯。

2.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.1 运行模式

H2有三种运行模式。

  • 内嵌模式(Embedded Mode)
    内嵌模式下,应用和数据库同在一个JVM中,通过JDBC进行连接。 可持久化,但同时只能一个客户端连接。内嵌模式性能会比较好
  • 服务器模式(Server Mode)
    使用服务器模式和内嵌模式一样,只不过它可以跑在另一个进程里
  • 混合模式
    第一个应用以内嵌模式启动它,对于后面的应用来说它是服务器模式跑着的。混合模式是内嵌模式和服务器模式的组合。第一个应用通过内嵌模式与数据库建立连接,同时也作为一个服务器启动,于是另外的应用(运行在不同的进程或是虚拟机上)可以同时访问同样的数据。第一个应用的本地连接与嵌入式模式的连接性能一样的快,而其它连接理论上会略慢

3.2 运行方式

开发中肯定是Server Mode方便,因为需要用工具管理数据。所以进入H2的bin目录。

  如果你在Win环境可以运行h2.bat或h2w.bat。区别只是后者是后台静默运行。

  如果你在Linux环境,可运行./h2.sh文件欢快地跑起来数据库服务。但其实不建议酱紫,因为这样有诸多不便。可如下修改:

  • 复制h2.sh为h2_server.sh文件;
  • 编辑h2_server.sh,如下:
    #!/bin/shdir=$(dirname"0")java−cp"0")java -cp "0")javacp"dir/h2-1.3.176.jar:H2DRIVERS:H2DRIVERS:H2DRIVERS:CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -webPort 8082"$@"
  • 说明:
    org.h2.tools.Server: 以服务器模式启动
    -tcpAllowOthers: 允许远程机器通过TCP方式访问
    -webAllowOthers: 允许远程机器通过浏览器访问
    -webPort 8082: 默认的访问端口(8082为未被占用的端口,如果此端口已经被其他端口占用,则改为其他端口)
  • 具体的运行方式
    ①chmod修改文件权限;
    ②输入nohup ./h2_server.sh &回车。这样可以后台运行;

四、远程管理

4.1 通过远程浏览器来访问h2

访问地址:http://服务器ip:8082/ ,出现如下页面:
  

4.2 路径的配置

jdbc:h2:tcp://localhost//usr/h2/data/rlib 是H2的路径。tcp代表使用tcp方式访问。localhost/是IP。因为例子是在Linux下,数据库的文件路径是“/usr/h2/data/rlib”,所以localhost/后面还有个/。详细的URL设置可见本文附录。(聪明如你,可能会问为什么既然H2远程部署在Linux下但使用浏览器访问IP还填写localhost?就不告诉你)
  User name : sa是h2默认的用户,密码可空。但作为永远中二随性的中年开发者,好歹设置下密码,尤其当你的H2部署在公网时。不然会被无聊人把数据删到汗裤都不剩。

4.3 点击如图Test connect按钮测试连接

此时如果数据库文件本身不存在则会自动创建。数据库文件自动生成到/usr/h2/data/目录下,名为rlib.mv.db。点击Connect,进入管理终端。

  H2的管理终端做得很不错的。按Ctrl+Enter执行输入区的SQL,按Shift+Enter执行当前选中的SQL。

五、数据备份恢复

不能备份和导入数据的数据库是跛脚的。可通过自带的CSVWRITE方法导出为csv格式文件,也可通过CSVREAD 导入数据。

5.1 导出函数CSVWRITE


  
  例子:CALL CSVWRITE(‘test2.csv’, ‘SELECT * FROM TEST’, ‘charset=UTF-8 fieldSeparator=|’);
  注意:导出时就算加上编码,导出后的文件用VIM、Editplus查看是正常,但用Excel查看也仍然会是乱码的。需要用Editplus另存为Unicode,就好了。

5.2 导入函数CSVWRITE

语法:CSVREAD(fileNameString [, columnsString [, csvOptions ] ] )
  例子①:导入数据:INSERT INTO TEST ( SELECT * FROM CSVREAD('d:/test.csv ')) ;
  例子②:导入结构及数据,根据csv文件创建h2数据表。
  //csv文件数据创建test表
  CREATE TABLE TEST AS SELECT * FROM CS VREAD('d:/test.csv ');
  //创建test表,csv文件相应的列插入到test表相应的字段
  CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)) AS SELECT * FROM CSVREAD('d:/test.csv ');

5.3 csvOptions

六、应用程序开发

终于到了开发使用环节了。H2数据库的开发非常简单,和MySQL等没有太大区别。

6.1 加入Maven依赖

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.195</version>
</dependency>

6.2 创建db.properties

driverClassName=org.h2.Driver
#此处的写法是使用嵌入模式链接H2库,紧接着那行是使用Server Mode用tcp连接。区别一个是前者性能更好,后者可同时多个客户端连接

url=jdbc:h2:D:/test
#url=jdbc:h2:tcp://1localhost//usr/h2/data/rlib
username=sa
password=

PS:在使用嵌入模式链接H2库时,使用管理页面连接会报错如下:

6.3 使用如上db.properties即可使用H2数据库进行开发

具体的数据库操作等不属于H2范畴,可自行参考其它资料。

H2数据库使用与管理入门相关推荐

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

    一.H2数据库介绍 常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL.其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的 ...

  2. H2数据库入门,看这篇就对了

    H2数据库是一个开源的关系型数据库. H2是一个采用java语言编写的嵌入式数据库引擎,只是一个类库(即只有一个 jar 文件),可以直接嵌入到应用项目中,不受平台的限制 应用场景: 可以同应用程序打 ...

  3. H2 数据库入门和基本使用

    目录 一.H2数据库安装 1.H2官方下载 2.安装H2数据库 3.登录H2数据库 4.登录错误解决 5.修改H2数据库密码 二.数据导入导出 1.数据导出 2.数据导入 3.数据插入 三.中文乱码解 ...

  4. H2 数据库使用简介

    一.前言 H2 是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中.H2 主要有如下三个用途: 第一个用途,也是最常使用的用途就在于可以同应 ...

  5. 深入分析H2数据库控制台中无需身份验证的RCE漏洞

    简介 最近,JFrog安全研究团队披露了H2数据库控制台中的一个安全漏洞,其编号为CVE-2021-42392.这个安全漏洞与Apache Log4j中臭名昭著的Log4Shell漏洞(JNDI远程类 ...

  6. Gerrit 服务搭建和升级详解(包括 H2 数据库迁移 MySQL 步骤)

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  7. mysql rds云数据库_云数据库 RDS MySQL快速入门手册

    云数据库 RDS MySQL是一款基于成熟云计算技术提供的高性能数据库服务,具有入门版.基础版.通用版.进阶版这四种,但最近有朋友表示,说自己并不会使用云数据库 RDS MySQL,为了帮助大家更好设 ...

  8. java的h2是什么_什么是H2数据库

    展开全部 H2是Thomas Mueller提供的一个开源的.纯java实现的关系数据库.e68a84e8a2ad3231313335323631343130323136353331333366306 ...

  9. 访问和操作H2数据库

    访问和操作H2数据库 O2OA平台内嵌了H2数据库,管理员可以通过支持JDBC的客户端对H2数据库进行访问和数据操作. O2OA默认内嵌了H2数据库,H2数据库支持两种访问方式: 一.以WEB方式访问 ...

最新文章

  1. 当移动数据分析需求遇到Quick BI
  2. UNION和UNION ALL有什么区别?
  3. PL/SQL复合变量
  4. 知识表示学习神器OpenKE:快速获取KG表示
  5. matlab案例_基于matlab和frost平台的cassie案例足式机器人运动学和动力学计算实现过程...
  6. matlab虚拟现实之V-Realm Builder2特别组节点使用
  7. MFC 教程【7_MFC的DLL 】
  8. JavaScript中||(或)逻辑运算符注意点
  9. Codeforces7C 扩展欧几里得
  10. 微信和QQ,终于可以互通了
  11. 基恩士PLC实例笔记①--立项及编程
  12. android httpclient版本,android版本存在 httpclient leak
  13. dcdc芯片效率不高的原因_影响DC-DC转换器效率的主要因素
  14. Geos库学习之(二)——使用Geos库创建简单的几何对象
  15. 人工智能论文-人工智能技术在新冠病毒肺炎疫情防控中的应用
  16. 一、Sails基础操作
  17. 关于WEP的产生原因及其原理
  18. 头条App项目测试实战(七)实名认证功能用例设计
  19. XJOI 1003 质因数分解
  20. 商人过河c语言实验报告,商人过河C语言程序编程

热门文章

  1. Basmap实战一:画地图及经纬度
  2. mysql源代码解析经典类——THD类
  3. 中国商用单相电能智能表行业市场供需与战略研究报告
  4. redis死链 org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception
  5. 拼团列表item自动滚动+倒计时实现
  6. Yarn详细的工作流程
  7. 误删除了Adobe虚拟打印,如何恢复?
  8. 软件工程毕业设计课题(52)微信小程序毕业设计JAVA景区景点购票旅游小程序系统设计与实现
  9. 联想服务器查看报警信息,求教联想万全2000服务器总是报警
  10. js中的this关键字