hsql数据库使⽤详解(⼊门)及快速使⽤
⼀、简介:
hsql数据库是⼀款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使⽤Java编程的话,不凡考虑⼀下使⽤它,相对其
他数据库来说,其体积⼩,才563kb。仅⼀个hsqldb.jar⽂件就包括了数据库引擎,数据库驱动,还有其他⽤户界⾯操作等内容。在
Java开源世界⾥,hsql是极为受欢迎的(就Java本⾝来说),JBoss应⽤程序服务器默认也提供了这个数据库引擎。由于其体积⼩的
原因,⼜是纯Java设计,⼜⽀持SQL99,SQL2003⼤部分的标准,所以也是作为商业应⽤程序展⽰的⼀种选择。请到以下地址下载hsql
: prdownloads.sourceforge/hsqldb/hsqldb_1_7_3_3.zip?download
⼆、使⽤hsql数据库:
1、hsql数据库引擎有⼏种服务器模式:常⽤的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-Only数据库。
2、最为常⽤的Server模式:
1)⾸先却换到lib⽂件夹下,运⾏java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb,xdb相当于数据库别名,执⾏命令后后会在lib⽬录下⽣成⼀个db⽂件夹,将会在db⽂件夹下创建⼀个数据库mydb,别名(⽤于访问数据库)是xdb,如果存在mydb数据库,将会打开它。
2)在lib⽂件夹⽬录下运⾏数据库界⾯操作⼯具:java -cp hsqldb.jar org.hsqldb.util.DatabaseManager
在Type 选项⾥选上相应的服务器模式,这⾥选择HSQL Database Engine Server模式;Driver不⽤修改;URL修改为jdbc:hsqldb:hsql://localhost/xdb (主要这⾥xdb就是上⾯我们设置的别名);user⾥设置⽤户名,第⼀次登录时,设置的是管理员的⽤户名,password设置密码。然后点击Ok。
3)第⼀次运⾏数据库引擎,创建数据库完毕。好了,你可以打开db⽂件夹,会发现⾥⾯多了⼏个⽂件。
mydb.properties⽂件:是关于数据库的属性⽂件。
mydb.script:hsql主要保存的表(这⾥按hsql的说法是Memory表,就是最为常⽤的),⾥⾯的格式都是
⽂本格式,可以⽤⽂本查看,⾥⾯的语句都是sql语句,熟悉sql语句的话,你也可以⼿动修改它。每次运⾏数据库引擎的话都是从这⾥加载进内存的。
mydb.lck表⽰数据库处于打开状态。
其他的请参看hsqldb包⾥的⼿册。
3、WebServer模式和Server运⾏模式基本⼀样,只是⽀持了Http等协议,主要⽤于防⽕墙,默认端⼝是9001。启动Server,java -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上⾯的⼀致。
4、Servlet模式可以允许你通过Servlet容器来访问数据库,请查看hsqlServlet.java的源代码,和WebServer类似。
5、另⼀个值得思考的模式是Standalone模式:不能通过⽹络来访问数据库,主要是在⼀个JVM中使⽤,那样的话,访问的速度会更加快。虽然⽂档⾥⾯提到主要是⽤于开发时使⽤,但是我们可以假设⼀下,该⽅法不需要⼀个引擎类的东西,⽽类似于打开⽂件的⽅式,返回⼀个Connection对象:
Connection c = Connection("jdbc:hsqldb:file:mydb", "sa", "");
将会在当前⽬录到mydb数据库相关⽂件,打开并返回⼀个Connection对象。该⽅式有点好处就是可
以不使⽤引擎,在需要的时候操作数据。所以那些对数据库不是特别有要求的,但⼜需要⼀个操作数据库的⽅式的话,可以使⽤这种⽅法。对于那些不想额外在数据库引擎花费⾦钱的话,可以使⽤这种⽅法。但是不推荐使⽤该⽅法。记得Hibernate ⾥SessionFactory可以使⽤openSession(Connecttion c)来获得⼀个Session对象的,因此,在测试或者实际应⽤的话都可以这样使⽤。
6、Memory-Only 数据库:顾名思义,主要是内存中使⽤,不⽤于保存数据。可以⽤于在内存中交换数据。
三、具体的链接与操作的话,和⼀般的JDBC操作⼀样。⽽相应的Server模式的话,连接地址主要你运⾏数据库界⾯操作⼯具时,在URL⼀栏时默认已经设好了。
---------------------------------------------------------------------------------------------
1.将hsqldb.jar拷贝到⼯程WEB-INF/lib下
2.开启两个命令⾏窗⼝,进⼊⼯程 WEB-INF/lib⽬录
cd C:/eclipseworkspace/TestFrame/WebContent/WEB-INF/lib(假设⼯程⽬录为此)
3.分别在命令⾏中输⼊命令,启动数据库服务器和客户端:
服务器:java -classpath hsqldb.jar org.hsqldb.Server
// 客户端:java -classpath hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
4,设定连接数据库的相关参数
driverClassName=org.hsqldb.jdbcDriver
url=jdbc:hsqldb:hsql://localhost
如果使⽤hibernate,需要注意下⾯的参数:
hibernate.dialect=org.hibernate.dialect.HSQLDialect
5.测试jdbc连接hsqldb.jar数据库程序:
package com.util;
import java.sql.*;
public class DBWork {
public static void main(String args[]){
try{
Class.forName("org.hsqldb.jdbcDriver");
Connection conn = Connection("jdbc:hsqldb:hsql://localhost", "sa", "");
System.out.println("conn = " + conn);
} catch(Exception e){
e.printStackTrace();
}
}
}
6.spring+hibernate中,l中配置:
<bean
class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName">
<value>org.hsqldb.jdbcDriver</value>
</property>
<property name="url">
<value>jdbc:hsqldb:hsql://localhost</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value/>
</property>
</bean>
<bean
class="hibernate3.LocalSessionFactoryBean" id="sessionFactory">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>com/hibernate/l</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
  HSQLDB是⼀个轻量级的纯Java开发的开放源代码的关系数据库系统,其体积⼩,占⽤空间⼩,使⽤简单,⽀持内存运⾏⽅式等特点。可以在
下载最新的HSQLDB版本。我这⾥下载的是 HSQLDB 2.2.7 版本。下载完之后,把它解压到任⼀⽬录下,如 E:\hsqldb 下,完成安装⼯作。
Hsqldb有四种运⾏模式:
⼀、内存(Memory-Only)模式:所有的数据都将在内存中完成,如果程序退出,则相应的数据也将同时被销毁。连接JDBC的实例为:jdbc:hsqldb:mem:dbname
⼆、进⾏(In-Process)模式:此模式从应⽤程序启动数据库,由于所有的数据都将写到⽂件中,所以,即使程序退出,数据也不会被销毁。In-Process 不需要另外启动,可以通过
⽅式即可启动数据库。连接 JDBC 的实例为:
jdbc:hsqldb:file:/E:/hsqldb/data/dbname
jdbc:hsqldb:file:/opt/db/dbname
jdbc:hsqldb:file:dbname
三、服务器模式:此模式下 HSQLDB 跟其它数据库服务器⼀样,需要通过服务器的形式来进⾏启动,可以通过
java -classpath ../lib/hsqldb.jar org.hsqldb.server.WebServer –database.0 testdb –dbname.0 testdbName
的命令启动⼀个守护进程。连接 JDBC 的实例为:
jdbc:hsqldb:hsql://localhost:port/dbname
四、Web服务器模式:此模式以WEB服务器的形式启动,并通过HTTP协议接受客户端命令。从1.7.2版本开始,Web服务器模式的 HSQLDB 开始⽀持事务处理。可以通过
java -classpath ../lib/hsqldb.jar org.hsqldb.WebServer –database.0 testdb –dbname.0 testdbname
的命令来启动。
重点讨论 hsqldb 服务器模式的启动⽅法和连接和实际java程序的JDBC连接情况。假设JDK已经安装到机器上,环境变量等都正确设置。
⾸先在 E:\hsqldbTest ⽬录下建⽴两个⼦⽬录,data和lib⽬录,data⽤来存放数据,lib⽤来管理jar包。将解压之后的hsqldb中的lib⽬录下的 hsqldb.jar ⽂件拷贝
到 E:\hsqldbTest\lib ⽬录下。
1.在hsqldbTest⽬录下创建 runServer.bat ⽂件,其内容为:
cd ..\data
@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server
2.保存 runServer.bat ⽂件,并双击运⾏该⽂件,此时回弹出命令⾏窗⼝,如下图,表⽰已启动 HSQLDB 数据库。
此时,在data⽬录下产⽣了三个⽂件,如:
test.lck ——标识数据库锁状态。
test.log ——运⾏数据库产⽣的log信息,它将记录每⼀个运⾏和⽤户操作环节。
test.properties——数据库的配置信息,包括分配的内存⼤⼩等,可更具需要修改。
注:如果在命令⾏窗⼝中按下[Ctrl] + [C]组合键,数据库将退出并关闭。
在做第三步时,千万不能关闭 runServer.bat
3.再创建 runManager.bat ⽂件,⽤来启动图形界⾯管理⼯具,其内容为:
cd ..\data
@java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager
4.保存 runManager.bat ⽂件,并双击⽂件,此时回弹出图形界⾯(注意,在进⾏这⼀不之前,必须确保第⼆步已执⾏),如下图。
Recent:将会列出最近的数据库配置
Setting Name: 设置名称,这⾥不需要填写
Type:选择服务器模式(HSQL Database Engine Server)
Driver:驱动名称,不需要修改
URL:JDBC连接,⽆需修改
User:⽤户名,根据需要设置
Password:密码,根据需要设置
5.点击【OK】按钮,即可连接到 test 数据库。如下图所⽰。
此时,我们可以在窗⼝中创建表等操作,例如,我们创建⼀个TBL_USERS的表。在菜单栏中选择 COMMAND -> CREATE TABLE命令,此时在右下⽂本框中显⽰创建表的命令,包括各式,⽀持的类型等。我们创建的 TBL_USERS 表结构如下图所⽰:
CREATE TABLE TBL_USERS(
ID INTEGER NOT NULL PRIMARY KEY,
FIRST_NAME VARCHAR(20),
LAST_NAME VARCHAR (30),
LOGIN_DATE DATE
)
6.点击【Execute】按钮,如果⽆语法错误,SQL语句将正常执⾏,此时,选择菜单栏中的 View -> Refresh Tree 命令,左侧栏中将显⽰创建的 TBL_USERS 。如下图所⽰。并且查看 test.log ⽂件,创建表的过程都将全部记录。
7.另外还可以⽤ DatabaseManagerSwing ⼯具启动图形界⾯。创建 runManagerSwing.bat ⽂件,内容为:
cd ..\data
@java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
保存⽂件,双击该⽂件,将启动 Swing 图形界⾯,如下图所⽰,具体的操作过程和 DatabaseManager ⼯具类似,不再重复。
以上就是启动hsqldb数据库和创建表的整个过程,其它的功能可以通过多次联系即可掌握。按照以上操作⽅式,hsqldb 将⾃动产⽣⼀个 test 的数据库。但是有时候我们需要⾃⼰指定数据库,数据库访问名,数据库访问端⼝等,该如何实现呢,很简单。只要在相对根⽬录下创建⼀个 server.properties ⽂件即可。
创建⾃⼰制定的数据库:
1.⾸先在 E:\hsqldbTest ⽬录下创建⼀个 server.properties ⽂件,⽂件内容为(注:在实际⽂件中,删除后⾯的注释内容):
server.port = 9001           #指定端⼝号为9001
server.database.0 = file:data/mydb  #将在data⽬录下创建mydb数据库
server.dbname.0 = mydb            #指定数据库名,jdbc连接时就是⽤此名称
server.silent = true
2.在 E:\hsqldbTest ⽬录下创建 runServer2.bat ⽂件,⽂件内容为
cd ..\data
@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -port 9001 -database.0 file:../data/mydb -dbname.0 mydb
3.双击运⾏ runServer2.bat ⽂件,将会在data⽬录下创建mydb数据库,并启动数据库。
4.双击运⾏已创建好的 runManagerSwing.bat ⽂件,打开图形管理界⾯,并设置连接到 mydb 数据库中,如下图所⽰:
5.配置好选项,点击 OK 按钮,即可连接到mydb数据库,在窗⼝中可以按照以前的步骤创建表,添加记录等操作。
好了,以上就是整个 hsqldb 的安装、启动、创建表等的全过程,在这⾥特别说明的是,hsqldb.2.2.7  是⽤ JDK.1.5 以上的版本的编译的,所以,如果你使⽤的是低于 jdk1.5 的版本时,可能出现异常情况,不能正常使⽤。另外,即使你安装的jdk版本是1.5以上的,可能还会出现异常,该如何办呢,此时,确保你的hsqldb是在官⽅⽹站下载的,需要检查你的java的环境变量,由于你的机器可能安装有oracle,很有可能出现问题,此时只需将 %JAVA_HOME%\bin 路径放置在path路径的最开头,这样,就不会出现异常情况了。
接下来,我们通过⼀个具体的java程序来连接建⽴好的mydb数据库,并且在mydb数据库中创建⼀个TBL_USERS的表。并插⼊⼀条记录。
1. 在 E:\hsqldbTest ⽬录下创建⼀个 HsqlDemo.java ⽂件,内容如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.hsqldb.jdbcDriver;
public class HsqlDemo {
public static void main(String[] args) {
try {
Class.forName("org.hsqldb.jdbcDriver");
Connection c = Connection("jdbc:hsqldb:hsql://localhost:9001/mydb", "sa", "");
if (c != null) {
System.out.println("Connected db success!");
String sql = "CREATE TABLE TBL_USERS(ID INTEGER, NAME VARCHAR, BIRTHDAY DATE);";
Statement st = c.createStatement();
sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES ('1', 'ADMIN', SYSDATE);";
if (st != null) {
st.close();
}
c.close();
}
} catch(Exception e) {
System.out.println("ERROR:failed to load HSQLDB JDBC driver.");
e.printStackTrace();
return;
springframework jar包下载
}
}
}
2.在 E:\hsqldbTest ⽬录下建⽴⼀个 runJava.bat ⽂件,⽤来运⾏ HsqlDemo.java  内容如下:
@echo off
set path = C:\Program Files\Java\jdk1.6.0_05\bin    #jdk的路径
javac -classpath ../lib/hsqldb.jar HsqlDemo.java
java  -classpath ../lib/hsqldb.jar;./ HsqlDemo    # 注意./ 后⾯的空格,./[空格] HsqlDemo
3.确定 mydb 数据库已经启动,如果没有,运⾏ runServer2.bat ,启动数据库。
4.运⾏ runJava.bat ⽂件,运⾏程序,如果⽆异常产⽣,说明已正确执⾏,此时,可以在 mydb.log ⽂件中看到创建的 TBL_USERS ,插⼊的记录,当然,可以⽤图形⼯具查看表。
OK,以上就是所有的hsqldb启动过程和连接jdbc的过程。假设我们需要创建/启动⼀个名为 mydb 的数据库。为了操作⽅便等,我们在 c:/hsqldb ⽬录下创建 mydb ⽬录。
1,创建 runMydb.bat ⽂件,⽂件内容为:
java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -database mydb
java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -database.0 mydb -dbname.0 mydb
启动 runMydb.bat 命令即可
2,创建 manageMydb.bat ⽂件,内容:
java -classpath ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager -url jdbc:hsqldb:hsql://localhost/mydb
启动 manageMydb.bat ,即可启动HSQLDB的图形界⾯管理⼯具
Hsqldb 的主要⼯具类:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。