H2数据库-安装上手

之前在github的一个项目里面发现了H2数据库,从来没有听说过,百度了一下,大概有所了解。

昨天准备自己本地安装一个,主要是考虑本地有一些小项目,只需要简单的数据库读写验证就好,不想安装mysql(一直使用虚拟机开发,内存和硬盘都比较有限)

大概描述一下过去两天的活动,首先参考网上的案例,在H2官网下了压缩包http://www.h2database.com/html/main.html

下载安装

本地是ubuntu的虚拟机,所以选择了下面这个8M的版本。解压后在本地直接sh h2.sh,就可以跑起来

不需要修改任何内容,直接点击Connect就可以连到数据库。后面就是在浏览器中的控制台里面就可以进行sql操作了。

Java代码访问数据库

H2官网上有一个例子

import java.sql.*;
public class Test {
    public static void main(String[] a)
            throws Exception {
        Connection conn = DriverManager.
            getConnection("jdbc:h2:~/test", "sa", "");
        // add application code here
        conn.close();
    }
}

所以我在本地新建了一个maven项目,添加dependency后,直接就可以跑这段代码了。没有报错就说明连到数据库了。

问题

需要注意的是,上面两步都分别连到的数据库,但是连到的是两个数据库。JDBC url是不同的地址。

把URL调整为同一个的时候,再次去跑java代码,发现代码开始报错了:

Exception in thread "main" org.h2.jdbc.JdbcSQLException: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-197]

上面有几个地方需要注意

H2数据库分几种模式,我目前只尝试过embedded模式和server模式。embedded模式只能有一个数据库连接,所以当上面的Saved Settings中选择Generic H2 (Embedded),如果下面的Connect点击连上去。Java代码里面如果再想连接这个数据库,就会发生报错。

修改Saved Settings为Server模式,同时还需要调整URL为jdbc:h2:tcp://localhost/···。然后再连接上去,就可以看到控制台

和代码端都可以访问了。


一点想法

其实H2数据库不需要下载安装的,目前上手测试,发现只需要一个jar包即可。

如果直接java -jar执行maven拉到本地库里面的jar包,同样可以实现上面的内容。

需要注意的地方是URL需要配合数据库的启动模式进行调整,server模式时,需要在URL中添加tcp://localhost/这段内容

猜你喜欢

转载自blog.csdn.net/lcdxiangzi/article/details/80927886