h2 mysql embeded_H2嵌入式数据库使用

通常,我们在使用数据库一般都首选mysql

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

首先,进入h2的 官网, 选择All Platforms版本进行下载

c81582f2ea9dfd5236f938f8fc3b2dbd.png

在你的目录下会得到这么一个文件

a57e2867d391bc9c111cde0623dc3187.png

解压到当前目录,进入到h2/bin目录下

a418567ef9086ace973c8612179ce3a8.png

有一个h2-*.jar,在命令行下运行java -jar h2-1.4.197.jar

它会在浏览器上自动打开一个h2数据库的管理页面

7db22d23c38befd71cf625d3054133df.png

在最上方可以选择语言

JDBC URL:jdbc:h2:后面跟着的是数据库文件所在的本地绝对路径名, 也就是cc数据库在桌面

User Name: 当前数据库所属的用户名

Password: 用户密码

点击Connect连接成功, 这时候,桌面会生成一个数据库文件:cc.mv.db

0ed9bf30b025a49ba55b5fed1d2e2dc8.png

这就是我们的h2数据库文件

在数据库管理页面上的写上建标语句, 并点击运行, 执行成功

6838b6ec501395a1209543ca2bc2ce1e.png

如果出现错误信息报错了话, 会在cc.mv.db所在的目录生成一个cc.trace.db文件, 这个文件是专门用来存放错误日志的

8f1d549564a2bbcaa437f5c3ce610775.png

打开看一下: 里面报的都是一些java错误日志

e5c13806063ec5031e1e4231dcca7e7a.png

在浏览器中对h2数据库进行数据操作的话,会没有代码提示,这非常的不方便。所以我推荐使用一个数据库可视化连接工具 -> dbeaver 这是免费且跨平台的工具,自行下载安装

打开dbeaver,在连接选项中找到h2 -> Embedded

ac136bb20310f874f31fcdcbbbb61978.png

数据库/模式:h2数据库文件的路径

用户名:数据库的用户名

密码:数据库的密码

进入编辑驱动设置,我们需要添加一个驱动包,我们删除原来的jar包,将我们之前bin目录下的h2-*.jar添加进去, 点击下一步, 完成,这时候,我们已经连接成功了。

注意,h2数据库只能拥有一个连接,不能有多个连接,所以我们在使用dbeaver连接h2数据库时,必须关掉控制台上让浏览器运行的连接。

cf4b4399bb4b29fdca9022960c221e46.png

public下的users表就是我们刚刚创建的, 来插入几条数据。

在工具栏下找到SQL编辑器

4b824dfce4c3f7613f1c29a455b60d72.png

选中所有数据,按ctrl+enter, 运行所有代码

c89c5fa68732dbe160cf5bf23a448a9f.png

这时候,数据已经有了

我们来将h2数据卡应用到java程序中,首先,关闭dbeaver的连接,当有其它进程在对当前数据库进行操作时,你是不能对它进行操作的

将cc.mv.db复制到java工程的db文件夹下,并导入h2数据库的驱动包h2-*.jar

171c3f950874054e529693af7f93e1ed.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程序,我们已经将数据取出来了

53705a6f98513d0aee72d0ebcf2b2974.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值