数据库入门:h2数据库安装及简单使用

文章目录

  • 1H2数据库简介
  • 2下载和安装
  • 3运行
    • 3.1windows环境
      • 3.1.1 jdbc server连接
      • 3.1.2嵌入模式
      • 3.1.3内存模式
    • 3.2inux环境
  • 简单操作

参考:
H2数据库使用与管理入门 https://blog.csdn.net/fanpeizhong/article/details/73543260
H2 Database使用教程 https://blog.csdn.net/RYAN0UP/article/details/80790836
H2 Database入门 https://www.cnblogs.com/yjmyzz/p/H2-database-tutorial.html

1H2数据库简介

H2是一个用Java开发的嵌入式数据库,只有一个jar文件,它本身只是一个类库,不仅能以server模式运行,甚至能直接嵌入到应用项目中,因此它的作用有:

  • 应用程序打包在一起发布,可以非常方便地存储少量结构化数据。
  • 正因为它的嵌入式特性,还可以用于单元测试,从而可以不用为了单元测试而去Mcok数据库返回值,而直接使用真实的数据库。在用于单元测试中,H2还可以关闭持久化功能,每一个用例执行完随即还原到初始状态。
  • 作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。
  • 作为真正的数据库使用,有服务器模式、嵌入/集成模式、混合模式

2下载和安装

官网下载,windows可执行文件安装版本和全平台通用版本,通用版解压后的文件结构是:
 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构建脚本
所有平台,都是通过脚本启动。
运行模式:

  • 内存模式:运行时的数据只保存在内存中,不回写到文件中
  • 内嵌模式:和工程一起打包。可以作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表
  • 服务器模式:
  1. TCP/IP server:支持客户端/服务器端的连接方式
  2. web server:此种运行方式支持使用浏览器访问H2 Console
  3. PG server:支持PostgreSQL客户端

3运行

3.1windows环境

  1. 创建数据库
    运行./bin/h2w.bat,状态栏中会出现h2数据库的图标,右键数据库图标,选择新建一个数据库。例子如下:
    数据库入门:h2数据库安装及简单使用_第1张图片由于在非内存模式下的h2数据库,本质是文件型数据库,因此,“数据库路径”要填写数据库在本地的绝对地址,用户名、密码什么的随意即可。务必记住此处的数据库的本地绝对路径。创建完成之,接下来分别以服务器(server)模式和嵌入式(embedded)模式。

3.1.1 jdbc server连接

  1. 在h2控制台测试一下连接是否正常,我的以server模式,连接正常。这一步的目的是,手动启动数据库server模式。
    数据库入门:h2数据库安装及简单使用_第2张图片
  2. 使用maven引入h2的驱动类
        <dependency>
            <groupId>com.h2databasegroupId>
            <artifactId>h2artifactId>
            <version>1.4.199version>
        dependency>
  1. jdbc代码实现
String jdbcUrl = "jdbc:h2:tcp://localhost/C:\\CRroot\\documents\\test";//绝对路径中可以都换成反斜杠
String userName = "jeason";
String passward = "jeason";
Connection testDbConnection = null;

DriverManager.setLoginTimeout(1);
testDbConnection = DriverManager.getConnection(jdbcUrl, userName, passward);
System.out.println(testDbConnection.isReadOnly());

代码实现中,url的含义是,通过tcp协议,访问了localhost这个IP上的,这个路径“C:\CRroot\documents\test”中的数据库,想连接别IP的数据库,更改localhost为目标IP即可。

3.1.2嵌入模式

按道理,和server唯一的不同是,不需要手动启动h2数据库,并且jdbc的url改为以下即可:

String jdbcUrl = "jdbc:h2:C:\\CRroot\\documents\\test";

但是要注意connection的关闭,要不然回报连接已经在使用中……

3.1.3内存模式

String jdbcURL = "jdbc:h2:mem:h2db";//使用本机内存中的h2db数据库
// 或者
String jdbcURL = "jdbc:h2:tcp://localhost/mem:h2db";//通过tcp协议使用某IP机器中内存中的h2db数据库

3.2inux环境

linux中H2使用脚本启动后,并不会像Windows一样,在状态栏中显示图标,无法点击图标预先创建一个数据库,然后以server模式进行连接。并且,如果一开始就server模式连接,必定会报以下错误:
Database “/root/te” not found, and IFEXISTS=true, so we cant auto-create it [90146-199] 90146/90146
因此,Linux下H2的使用方式是:

  1. 以h2.sh启动数据库后,如果想新建一个数据库,一定要先切换到Embedded模式,设置好用户名和密码,connect一下,即可进入后台。这时会根据在jdbc中填写的地址,在本地创建一个数据库文件。记住这个地址!
  2. 回退到登录界面,切换到server模式,会自动切换JDBC URL地址,同样的用户名和密码,connect一下
  3. 之后根据需求修改jdbc的url地址,进行数据库连接。

简单操作

创建grade表,要求该表包含id,teacher,class和grade列,对于name和sex列定义为字符型,
其他定义为int型,设置id列为主键列,除sex列外都不能为空。
create table grade
(
id int primary key not null,
teachername varchar(20) null,
sex varchar(5),
class int not null,
grade int not null
)

你可能感兴趣的:(数据库)