暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

HSQLDB使用教程

IT路人乙 2020-04-13
1954

这段时间为了巩固后方革命根据地,一直没有时间更新公众号,感觉自己都生疏了!不过从今天开始大家又有福利了,又恢复正常了。这波疫情真够大家闹心的,除了门口小超市和口罩,其他几乎都停摆了。长时间不用Mybatis都快忘记了,今天想重温下其源码,搭环境时,却发现这台电脑没有安装MySQL,真是!情急之下偷个懒就想着使用个嵌入式数据库替代MySQL,抓阄之后,抓到了HSQLDB。下面就跟我一起探索HSQLDB的使用方法。

HyperSQL Database(HSQLDB)是一个关系型数据库系统 。它被数据库应用用来开发测试部署。HyperSQL使用Java语言编写,运行在JVM上。它支持数据库访问的JDBC接口。为了使用HyperSQL数据库,你首先需要到其官网下载这个应用,官网地址为hsqldb.org,我当前下载的版本是2.5。解压压缩包,在lib文件夹下,你能找到hsqldb.jar的文件,这个jar包包含几个组件和程序

  • HyperSQL RDBMS引擎

  • HyperSQL JDBC Driver

  • 数据库管理工具(基于Swing和AWT版本的访问数据的GUI工具)

HyperSQL RDBMS和JDBC Driver提供核心功能。DatabaseManagerSwing是一个数据库访问工具。另外,sqltool.jar包包含Sql工具,是一个访问数据库的命令行工具。

运行数据库访问工具

交互式用户使用工具来访问数据库,包括数据库的创建,插入或改数据,或者查询数据库。在下面的例子中,Swing版本的数据库管理工具被执行。hsqldb.jar位于../lib目录下相对当前目录。

java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

假如hsqldb.jar在当前目录下,命令应该改变为:

java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

当工具被成功启动,你能够连接到数据库,并使用SQL命令操作数据库。这里,你可以连本地数据库xdb,连接明细如下图

基于这样的UI界面,你可以很方便的操作数据。

HyperSQL数据库

每个HyperSQL数据库被叫做一个catalog。根据数据的存储,HyperSQL有三种catalog类型

  • mem : 数据存储在内存中

  • file : 数据存储在文件系统文件中

  • res : 数据存储为一个Java资源,如一个只读的jar包

内存模型的catalog能够用来测试或者精密缓存。这种类型的数据库没有任何文件。

文件模型的catalog包含2-6个文件,名称都是相同的,只有扩展名不同,并且位于相同的目录下。例如,数据库叫test,则包含下面的文件:

  • test.properties

  • test.script

  • test.log

  • test.data

  • test.backup

  • test.lobs

属性文件包含一些数据库的配置。脚本文件包含表和其他数据库对象的定义。日志文件数据库当前的改变。数据文件包含表缓存的数据。备份文件是一个数据文件的备份压缩文件。

当test catalog被打开,test.log文件被用来写数据产生的改变。这个文件当一个常规SHUTDOWN的时候被移除。此外,对于异常SHUTDOWN的情况,这个文件下次启动的时候被用来恢复改变。

res类型的catalog包含一个zip或jar格式的文件,这个文件被部署为一个Java应用程序的一部分。

进程内访问数据库

通常情况下,JDBC被用来访问数据库。例如,假如文件数据库名为testdb,下面的代码被用来获取Connection:

Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb","SA","");

获取链接的url格式为

jdbc:hsqldb:file:<testbd path>

对于mem:database,使用mem:协议指定url,如数据库名称为mymemdb,访问代码为

Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");

对于res:database,使用res:协议指定url。数据库路径为一个Java URL。下面的例子中,resdb是数据文件的root名称,它位于/org/my/path目录下。访问代码如下

Connection c = DriverManager.getConnection("jdbc:hsqldb:res:org.my.path.resdb", "SA", "");

服务器模式

在大多数应用中,进程中访问是比从网络中访问更快的。在开发期间, 服务器模式也是更优的。当你的应用运行时,它允许你使用另一个孤立的数据库访问工具查询数据库。你可以使用下面的命令来创建一个文件名为mydb.*,别名为xdb的数据库

java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:mydb --dbname.0 xdb

启动日志如下图所示

服务器启动成功之后,你可以看到HSQLDB在当前目录下创建了如下文件

当一个HyperSQL服务器正在运行,客户端应用能够使用hsqldb.jar中的HSQLDB JDBC驱动连接数据库。hsql的缺省监听端口为9001,代码片段如下

try {
    Class.forName("org.hsqldb.jdbc.JDBCDriver" );
} catch (Exception e) {
    System.err.println("ERROR: failed to load HSQLDB JDBC driver.");
    e.printStackTrace();
    return;
}

Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "SA", "");

当最近的连接被关闭时,你也可以制定连接属性来关闭数据库

Connection c = DriverManager.getConnection(
        "jdbc:hsqldb:file:/opt/db/testdb;shutdown=true", "SA", "");

这个特性在测试中是很有用的。数据库有很多可选的属性,你能够在URL中指定很多属性,或者在第一次连接数据库的时候指定连接属性。

文章转载自IT路人乙,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论