HSQLDB 是一个轻量级的纯Java开发的开放源代码的关系数据库系统。因为HSQLDB的轻量(占用空间小),使用简单,支持内存运行方式等特点,HSQLDB被广泛用于开发环境和某些中小型系统中。
在http://sourceforge.net/projects/hsqldb/files/下载了HSQLDB 1.8.0版本。把下载的zip文件解压缩至任意目录例如c:\hsqldb1.8便完成安装。
hsqldb有四种运行模式:
一、内存(Memory-Only)模式:所有数据都在内存里操作。应用程序退出后则数据被销毁。
启动方式1:通过程序中首次调用Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:myDbName", "sa", "");时。
启动方式2:你也可以在server.properties中指定相同的URL来运行一个Memory-Only(仅处于内存中)服务器实例。
JDBC实例:jdbc:hsqldb:mem:testDbName
二、进程(In-Process)模式:从应用程序启动数据库。因为所有数据被写入到文件中,所以即使应用程序退出后,数据也不会被销毁。 跟Memory-Only模式一样,In-Process不需要另外启动,通过DriverManager.getConnection(jdbcUriName, "sa", "");方式既可启动。
JDBC实例:
jdbc:hsqldb:file:/C:/testdb/testDbName
jdbc:hsqldb:file:/opt/db/myDbName
jdbc:hsqldb:file:myDbName
三、服务器模式:该模式下HSQLDB跟其他数据库服务器一样,以服务器的形式被启动。 通过java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 testdb -dbname.0 testDbName之类的命令启动HSQLDB守护进程。
JDBC实例:
jdbc:hsqldb:hsql://localhost:9001/testDbName
四、Web服务器模式:该模式HSQLDB以WEB服务器的形式启动,并通过HTTP协议接受客户端命令。从1.7.2开始,WEB服务器模式的HSQLDB开始支持事务。 java -cp ../lib/hsqldb.jar org.hsqldb.WebServer -database.0 mydb -dbname.0 myDbName
现以介绍hsqldb服务器模式的启动方法:
因为In-Process模式以及Memory-Only模式可以无需另外启动HSQLDB,下面介绍服务器模式的启动方法。
假设我们需要创建/启动一个名为testdb的数据库。
先在c:\hsqldb1.8目录下创建testdb目录。
1.创建runTestdb.bat文件,其内容为:
- java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 testdb -dbname.0 testdbname
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 testdb -dbname.0 testdbname
现在你可能会疑惑,[-database.0 ]、 [dbname.0]为什么在后面加[0]。_... ...我们不是在前面说服务模式运行的时候可以指定10个数据库吗,如有多个数据库,则继续写命令行参数-database.1 aa -dbname.1 aa -database.2 bb-dbname.2 bb ... ...
2.再创建UITestdb.bat,用来启动图形界面管理工具,其内空为:
- java -cp ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager -url jdbc:hsqldb:hsql://localhost/testdbname
java -cp ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager -url jdbc:hsqldb:hsql://localhost/testdbname
其中,testdbname要和runTestdb.bat中-dbname.0后的名字testdbname对应,而不是用-database.0后的名字testdb。用它当启动后会报异常:java.sql.Sqlexception:S1000 General error java.lang.RuntimeException:database alias does not exist。
org.hsqldb.util.DatabaseManager还可以换为其它工具类:
org.hsqldb.util.DatabaseManagerSwing
hebernate.properties内容:
driverClass=org.hsqldb.jdbcDriver
url=jdbc:hsqldb:hsql://localhost/testdb
username=sa
password=
dialect=org.hibernate.dialect.HSQLDialect
HSQLDB-2.0版本稍有点区别:
1.创建runTestdb.bat文件,其内容为:
- java -cp ../lib/hsqldb.jar org.hsqldb.server.Server -database.0 testdb -dbname.0 testdbname
java -cp ../lib/hsqldb.jar org.hsqldb.server.Server -database.0 testdb -dbname.0 testdbname
2.JDBC驱动类:org.hsqldb.jdbc.JDBCDriver
工具的使用
Hsqldb提供的主要的工具类:
org.hsqldb.util.DatabaseManager
org.hsqldb.util.DatabaseManagerSwing
org.hsqldb.util.Transfer
org.hsqldb.util.QueryTool
org.hsqldb.util.SqlTool
其中DatabaseManage和Sql Tool,只能用命令行参数来运行。你可以在命令行后面加上参数-?来查看这些工具可用的参数列表。其他工具可以通过DatabaseManager的主界面启动,便于交互式操作。
为了便于操作,我们同样把这些工具启动的命令做成批处理文件。方法和前面我们所介绍的创建启动服务模式命令的方法一样。在这里我们再强调一次hsqldb.jar的位置,因为所有启动命令都是参照hsqldb.jar的位置编写的
如果您觉得麻烦你也可以采用绝对路径编写命令。
现在我们一起运行AWT版本的DatabaseManager工具,hsqldb.jar位于相对于当前路径的../lib下面,命令如下:
Java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager
将命令保存为后缀名为bat的批处理文件,保存为DatabaseManager.bat,也可根据个人习惯命名。执行DatabaseManager.bat你将看到如下画面:。
现在对这个简洁的登录界面做个简单的介绍*_*
Recent:选择你最近的登录方案,[可选]
Setting Name:本次登录方案名称,如果本次登录成功,那么等你下次登录的时候在Recent下拉列表中将看到你的成功登录方案[可选]
Type:登录模式,其中包括In-Memory模式、Standalone(In-process)模式、Server模式、WebServer模式... ...[必选]
Driver:连接数据库的驱动程序[必选]
URL:连接数据库的URL[必选]
User:用户名[必选]
Password:密码[ 除非密码为空]
注:如果Type项选择Server模式或者WebServer模式需要你事先启动与之对应的服务模式。而Standalone(In-process)默认是不支持DatabaseManager连接的,具体原因我们已经在前面解释过。至于In-Memory可以随意登录,所有的操作数据都不会记录在本地磁盘。而Type还有很多其他选项,具体的用法可以参考官方文档,位置在hsqldb目录\doc\guide\ guide.pdf。
如果你想运行DatabaseManagerSwing也很简单,相信你已经想到了。我们只需要把启动DatabaseManager命令修改成:
Java -cp ../lib/hsqldb.jar org.hsqldb.util. DatabaseManagerSwing
PS:
1. Hsqldb_start.bat:
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_23\
set PATH=%JAVA_HOME%\bin;C:\Windows;C:\Windows\Command
set CLASSPATH=%JAVA_HOME%\jre\lib\rt.jar;
java -cp ./hsqldb.jar org.hsqldb.Server -database.0 file:.\db\Training\Training -dbname.0 Training -database.1
file:.\db\SampleDB\SampleDB -dbname.1 SampleDB
2. Derby_run.bat:
NetworkServerControl start -h 192.168.128.175 -p 1527