张坤的个人博客

  • 首页
  • 分类
  • 标签
  • 日志

  • 搜索
Jenkins RabbitMQ Zookeeper IDEA Logstash Kibana ELK NIO Netty Spring Cloud Golang DataX Elasticsearch React Native Mysql H2 Socket Spring Boot Kafka Mybatis Sqlmap Vue Postgresql Docker Vert.x Flutter Flink Redis

H2嵌入式数据库使用

发表于 2020-05-29 | 分类于 RMDB | 0 | 阅读次数 26

通常,我们在使用数据库一般都首选mysql
但是,今天我将介绍一款能够嵌入到java程序中的数据库,它能随着java工程移动而移动,不像mysql那样,在不同的机器上必须要改配置和重新导入一遍导入数据。

  • 首先,进入h2的 官网, 选择All Platforms版本进行下载
    image.png
    在你的目录下会得到这么一个文件

image.png
解压到当前目录,进入到h2/bin目录下
image.png
有一个h2-*.jar,在命令行下运行java -jar h2-1.4.197.jar
它会在浏览器上自动打开一个h2数据库的管理页面
image.png

  • 在最上方可以选择语言
  • JDBC URL:jdbc:h2:后面跟着的是数据库文件所在的本地绝对路径名, 也就是cc数据库在桌面
  • User Name: 当前数据库所属的用户名
  • Password: 用户密码
    点击Connect连接成功, 这时候,桌面会生成一个数据库文件:cc.mv.db
    image.png
    这就是我们的h2数据库文件

在数据库管理页面上的写上建标语句, 并点击运行, 执行成功
image.png
如果出现错误信息报错了话, 会在cc.mv.db所在的目录生成一个cc.trace.db文件, 这个文件是专门用来存放错误日志的
image.png
打开看一下: 里面报的都是一些java错误日志
image.png
在浏览器中对h2数据库进行数据操作的话,会没有代码提示,这非常的不方便。所以我推荐使用一个数据库可视化连接工具 -> dbeaver 这是免费且跨平台的工具,自行下载安装
打开dbeaver,在连接选项中找到h2 -> Embedded
image.png

  • 数据库/模式:h2数据库文件的路径
  • 用户名:数据库的用户名
  • 密码:数据库的密码
    进入编辑驱动设置,我们需要添加一个驱动包,我们删除原来的jar包,将我们之前bin目录下的h2-*.jar添加进去, 点击下一步, 完成,这时候,我们已经连接成功了。
    注意,h2数据库只能拥有一个连接,不能有多个连接,所以我们在使用dbeaver连接h2数据库时,必须关掉控制台上让浏览器运行的连接。
    image.png
    public下的users表就是我们刚刚创建的, 来插入几条数据。
    在工具栏下找到SQL编辑器
    image.png
    选中所有数据,按ctrl+enter, 运行所有代码
    image.png
    这时候,数据已经有了
    我们来将h2数据卡应用到java程序中,首先,关闭dbeaver的连接,当有其它进程在对当前数据库进行操作时,你是不能对它进行操作的
    将cc.mv.db复制到java工程的db文件夹下,并导入h2数据库的驱动包h2-*.jar
    image.png
    cc.trace.db是错误日志信息,当java程序出错是,会在cc.mv.db所在的文件夹下生成
  • 使用jdbc连接
package cn.java2016.demo1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.h2.tools.Server;

public class H2DatabaseDemo
{
    private static String driver = "org.h2.Driver"; // h2数据库驱动类
    private static String url = "jdbc:h2:./db/cc";  // cc数据库所在目录及数据库名
    private static String user = "root";    // 数据库用户名
    private static String password = "root";    // 数据库密码
    
    public static void main(String[] args) throws SQLException, ClassNotFoundException
    {
    	Server server = Server.createTcpServer().start();
    	Class.forName(driver);
    	Connection conn = DriverManager.getConnection(url, user, password);
    	Statement stat = conn.createStatement();
    	ResultSet resultSet = stat.executeQuery("SELECT * FROM users;");
    	while (resultSet.next())
    	{
            System.out.println(resultSet.getObject(1) + " : " + resultSet.getObject(2) + " : " + resultSet.getObject(3));
    	}
    	resultSet.close();
    	stat.close();
    	conn.close();
    	
    	server.stop();	// 关闭h2服务
    }
}

运行java程序,我们已经将数据取出来了
image.png

# Jenkins # RabbitMQ # Zookeeper # IDEA # Logstash # Kibana # ELK # NIO # Netty # Spring Cloud # Golang # DataX # Elasticsearch # React Native # Mysql # H2 # Socket # Spring Boot # Kafka # Mybatis # Sqlmap # Vue # Postgresql # Docker # Vert.x # Flutter # Flink # Redis
Spring Boot集成Socket
Mysql主从配置
  • 文章目录
  • 站点概览
会Coding的猴子

会Coding的猴子

57 日志
19 分类
28 标签
RSS
Github
Creative Commons
© 2021 会Coding的猴子
由 Halo 强力驱动
|
主题 - NexT.Gemini v5.1.4

湘ICP备18011740号