日期:2014-05-16  浏览次数:20643 次

HSQLDB数据库安装启动及JDBC连接

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代码 复制代码
  1. 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代码 复制代码
  1. 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代码 复制代码
  1. 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.hsq