h2数据库使用_数据库教程

h2数据库使用_数据库教程H2数据库是一个开源的关系型数据库。H2是一个采用java语言编写的嵌入式数据库引擎,只是一个类库(即只有一个jar文件),可以直接嵌入到应用项目中,不受平台的限制应用场景:可以同应用程序打包在一起发布,可以非常方便地存储少量结构化数据可用于单元测试可以用作缓存,即当做内存数据库H2的产品优势:纯Java编写,不受平台的限制;只有一个jar文件,适合作为嵌入式数据库使用;h2提供了一个十分方便的web控制台用于操作和管理数据库内容;功能完整,支持标准SQL和JDBC。麻雀虽小五

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

H2数据库是一个开源的关系型数据库。

H2是一个采用java语言编写的嵌入式数据库引擎,只是一个类库(即只有一个 jar 文件),可以直接嵌入到应用项目中,不受平台的限制

应用场景:

  • 可以同应用程序打包在一起发布,可以非常方便地存储少量结构化数据
  • 可用于单元测试
  • 可以用作缓存,即当做内存数据库

H2的产品优势:

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

安装

在这里插入图片描述

建议下载 All Platforms 的,Linux版本的也在里面。

解压后目录如下:

h2/
|--bin/
|  |--h2-1.4.200.jar
|  |--h2.bat
|  |--h2.sh
|  |--h2w.bat
|--docs/
|--service/
|--src/
|--build.bat
|--build.sh

目录说明:

h2-1.4.200.jar   H2数据库的jar包

h2.bat           Windows控制台启动脚本

h2.sh            Linux控制台启动脚本

h2w.bat          Windows控制台启动脚本 

build.bat        windows构建脚本

build.sh         linux构建脚本

docs             H2数据库的帮助文档(内有H2数据库的使用手册)

service          通过wrapper包装成服务。

src              H2数据库的源代码

启动

win10下启动:

进入H2 的bin目录,运行 h2.bat 或 h2w.bat(区别为h2w.bat是后台静默运行)

系统会进入H2 数据库的Web Console,http://<你的ip>:8082

在这里插入图片描述

jdbc:h2:D:/software/h2/data/test,会在指定路径下创建一个名为 test.mv.db 的数据库,你可能还会看到一个 test.trace.db 的文件,这个是h2的错误信息,可以直接打开看。有没有跟我一样好奇为啥名称里面有个mv,这是因为高版本的H2存储引擎默默认为mvStore,文档最后面有讲这个存储引擎的。

点击Connect,进入管理终端

在这里插入图片描述

运行模式与运行方式

运行模式

H2有三种运行模式。

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

连接方式

  1. 以嵌入式(本地)连接方式连接H2数据库

    这种连接方式默认情况下只允许有一个客户端连接到H2数据库,有客户端连接到H2数据库之后,此时数据库文件就会被锁定,那么其他客户端就无法再连接了。

    连接语法:jdbc:h2:[file:][<path>]<databaseName>

    例如:

    • jdbc:h2:~/test    // 连接位于用户目录下的test数据库
    • jdbc:h2:file:/data/sample
    • jdbc:h2:file:E:/H2/gacl // Windows only
  2. 使用TCP/IP的服务器模式(远程连接)方式连接H2数据库(推荐)

    这种连接方式就和其他数据库类似了,是基于Service的形式进行连接的,因此允许多个客户端同时连接到H2数据库。

    连接语法:jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>

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

  3. H2数据库的内存模式

    连接语法:jdbc:h2:mem:<databaseName>

    • H2数据库被称为内存数据库,因为它支持在内存中创建数据库和表。
    • 注意:如果使用H2数据库的内存模式,那么我们创建的数据库和表都只是保存在内存中,一旦服务器重启,那么内存中的数据库和表就不存在了。

可选配置

在用户目录下新建 .h2.server.properties,支持如下属性配置:

  • webAllowOthers: 是否允许远程连接,默认 false。
  • webPort: h2 端口,默认为 8082。
  • webSSL: 是否启用 SSL 加密连接,默认 false。
  • webAdminPassword: 超级管理员密码。

超级管理员密码进入如下页面需要:

在这里插入图片描述

如果没有手动配置此文件,以 web-server 方式首次启动 H2 后,点击打开的浏览器页面的 Save 按钮后就会自动创建一个。

.h2.server.properties 文件范例:

#H2 Server Properties
#Wed Jul 01 23:00:28 CST 2020
0=Generic JNDI Data Source|javax.naming.InitialContext|java\:comp/env/jdbc/Test|sa
1=Generic Teradata|com.teradata.jdbc.TeraDriver|jdbc\:teradata\://whomooz/|
10=Generic DB2|com.ibm.db2.jcc.DB2Driver|jdbc\:db2\://localhost/test|
11=Generic Oracle|oracle.jdbc.driver.OracleDriver|jdbc\:oracle\:thin\:@localhost\:1521\:XE|sa
12=Generic MS SQL Server 2000|com.microsoft.jdbc.sqlserver.SQLServerDriver|jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=sqlexpress|sa
13=Generic MS SQL Server 2005|com.microsoft.sqlserver.jdbc.SQLServerDriver|jdbc\:sqlserver\://localhost;DatabaseName\=test|sa
14=Generic PostgreSQL|org.postgresql.Driver|jdbc\:postgresql\:test|
15=Generic MySQL|com.mysql.jdbc.Driver|jdbc\:mysql\://localhost\:3306/test|
16=Generic HSQLDB|org.hsqldb.jdbcDriver|jdbc\:hsqldb\:test;hsqldb.default_table_type\=cached|sa
17=Generic Derby (Server)|org.apache.derby.jdbc.ClientDriver|jdbc\:derby\://localhost\:1527/test;create\=true|sa
18=Generic Derby (Embedded)|org.apache.derby.jdbc.EmbeddedDriver|jdbc\:derby\:test;create\=true|sa
19=Generic H2 (Server)|org.h2.Driver|jdbc\:h2\:tcp\://localhost/~/test|sa
2=Generic Snowflake|com.snowflake.client.jdbc.SnowflakeDriver|jdbc\:snowflake\://accountName.snowflakecomputing.com|
20=Generic H2 (Embedded)|org.h2.Driver|jdbc\:h2\:~/test|root
3=Generic Redshift|com.amazon.redshift.jdbc42.Driver|jdbc\:redshift\://endpoint\:5439/database|
4=Generic Impala|org.cloudera.impala.jdbc41.Driver|jdbc\:impala\://clustername\:21050/default|
5=Generic Hive 2|org.apache.hive.jdbc.HiveDriver|jdbc\:hive2\://clustername\:10000/default|
6=Generic Hive|org.apache.hadoop.hive.jdbc.HiveDriver|jdbc\:hive\://clustername\:10000/default|
7=Generic Azure SQL|com.microsoft.sqlserver.jdbc.SQLServerDriver|jdbc\:sqlserver\://name.database.windows.net\:1433|
8=Generic Firebird Server|org.firebirdsql.jdbc.FBDriver|jdbc\:firebirdsql\:localhost\:c\:/temp/firebird/test|sysdba
9=Generic SQLite|org.sqlite.JDBC|jdbc\:sqlite\:test|sa
webAllowOthers=false
webPort=8082
webSSL=false
webAdminPassword=111111

注:在 H2 Control 每次构建的数据库连接保存后都会作为历史配置项自动保存到 .h2.server.properties 文件内,一行一个链接配置,格式为 <number>=<name>|<driver>|<url>|<user>
上述编号 0~20 的连接配置是 H2 默认提供的,编号 21 是我自行创建保存的,连接的密码因安全性不会保存下来。

spring boot2.x中集成H2数据库

添加依赖:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

配置如下:

spring.jpa.database=h2
spring.jpa.show-sql=true
# ddl执行方式,update create 等
spring.jpa.hibernate.ddl-auto=update


spring.datasource.platform=h2  #表明使用的数据库平台是h2
spring.datasource.url=jdbc:h2:./data/test;AUTO_SERVER=TRUE
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.driverClassName=org.h2.Driver

# 进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
spring.h2.console.settings.web-allow-others=true  
# 进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe。YOUR_URL是你程序的访问URl。
spring.h2.console.path=/h2-consloe
# 进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。
spring.h2.console.enabled=true  

FilePath的格式说明:

  • ./{path}/{fileName} 在当前程序的根目录下创建目录和数据库文件

  • ~/{path}/{fileName} 在当前用户的根目录下创建目录和数据库文件(windows即用户目录,Linux即home目录)

  • C:/{path}/{fileName} 在指定盘符的指定目录下创建数据库文件

附加参数:

  • AUTO_SERVER=TRUE 启动自动混合模式,允许开启多个连接,该参数不支持在内存中运行模式

  • DB_CLOSE_ON_EXIT=FALSE,当虚拟机退出时并不关闭数据库

  • MODE=MYSQL 兼容MySQL

更多URL格式和示例可以看这篇博客最下面:H2数据库使用简介

使用和MySQL没啥区别,MyBatis,Hibernate以前怎么用,现在还怎么用,主要就是配置。

错误信息查看

上面已经提到过,类似 test.trace.db 这样的文件,就是H2的错误信息,我们打开看看:

在这里插入图片描述

我们主要去找 [*] 这个符号和后面的错误码,然后对照着官方的错误码说明看,就知道哪里报错了。

我们看看[42001-200]这个错误码,前面的 42001 是错误码,后面的 200 的 h2 的版本

在这里插入图片描述

大概意思就是:尝试执行无效的SQL语句时引发代码42001的错误,原因就是 H2 不支持
MySQLENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 这些设置,创建表的时候去掉就好了。

其他

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183422.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSP考试总结_考试总结300字

    CSP考试总结_考试总结300字t1模拟很难受,要加大这方面练习,要习惯用草稿理清思路t2和去年一样的东西,也是高精的坑,考前应该补一下高精t3比较正常,这种大数据结构只有考虑暴力,打正解很容易浪费时间并且上头t4无能

    2022年8月6日
    3
  • 函数指针赋值

    函数指针赋值在远程注入的时候特别需要给函数指针赋值。 有以下2种方法,第一定义方法。主要用于给大量同参数的函数注入。 #include”stdafx.h”#include”windows.h”typedefint(_stdcall*p_MessageBoxA)(HWNDhWnd,LPCSTRlpText,LPCSTRlpCaption,UINTuType)

    2022年7月11日
    13
  • 串口通信-MSComm控件使用详解

    串口通信-MSComm控件使用详解MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 MicrosoftCommunicationsControl(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通…

    2022年10月30日
    0
  • Mac使用Boot Camp安装win10(不用U盘)

    Mac使用Boot Camp安装win10(不用U盘)原文在https://bbs.feng.com/forum.php?mod=viewthread&tid=10748184&page=1&mobile=no大概的步骤:1、从微软官网下载win10专业版本iso文件(文件有4.6G,官网白天下载很慢,晚上下载快点);2、使用MacOS自带的BootCamp(新兵训练营?)安装win10,BootCamp安装时会从官网服务器下载支

    2022年5月12日
    142
  • centos7 查看端口占用_如何查看端口是否被占用

    centos7 查看端口占用_如何查看端口是否被占用 netstat-nap#会列出所有正在使用的端口及关联的进程/应用netstat-lnp|grep5000这条语句的作用是查询占用5000端口的应用和进程,把5000端口替换成你要过滤的端口就可以可以看到占用5000端口的进程的基本信息如果要杀掉占用端口的进程执行以下命令即可:kill-928533可以看到进程已被杀死 …

    2022年7月27日
    12
  • Win10共享打印机提示0x0000011b错误代码的解决方法[通俗易懂]

    Win10共享打印机提示0x0000011b错误代码的解决方法[通俗易懂]首先是在共享打印机的主机Windows是更新kb5005565这个补丁所导致的,那么我们在控制面板-卸载程序里卸载掉2021-09-15Windows更新的补丁KB5005565后重启电脑就好了。然后禁止Win10更新操作方法:鼠标右键“win”图标在弹出的菜单栏中选择“运行”选项,打开运行窗口后输入“services.msc”, 在打开的窗口中找到“windowsUpdate”启用选项,并双击打开, 在弹出的小窗口中的启动类型选项处点击选择“禁用”,点击“确定”另外win11出现的错误代.

    2022年9月3日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号