一、简介:
hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,不凡考虑一下使用它,相对其
他数据库来说,其体积小,才563kb。仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动, 还有其他用户界面操作等内容。在
Java开源世界里,hsql是极为受欢迎的(就Java本身来说),JBoss应用程序服务器默认也提供了这个数据库引 擎。由于其体积小的
原因,又是纯Java设计,又支持SQL99,SQL2003大部分的标准,所以也是作为商业应用程序展示的一种选择。请到以下地址下载hsql
:
二、使用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: (主要这里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 = DriverManager.getConnection("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:
如果使用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 = DriverManager.getConnection("jdbc:hsqldb:", "sa", "");
System.out.println("conn = " + conn);
} catch(Exception e){
e.printStackTrace();
}
}
}
6.spring+hibernate中,applicationContext.xml中配置:
class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
org.hsqldb.jdbcDriver
jdbc:hsqldb:
sa
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" id="sessionFactory">
com/hibernate/UserInfo.hbm.xml
org.hibernate.dialect.HSQLDialect
true
HSQLDB 安装与使用
HSQLDB是一个轻量级的纯Java开发的开放源代码的关系数据库系统,其体积小,占用空间小,使用简单,支持内存运行方式等特点。可以在
下载最新的HSQLDB版本。我这里下载的是 HSQLDB 2.2.7 版//代码效果参考:http://hnjlyzjd.com/hw/wz_25352.html
本。下载完之后,把它解压到任一目录下,如 E:\hsqldb 下,完成安装工作。Hsqldb有四种运行模式:
一、内存(Memory-Only)模式:所有的数据都将在内存中完成,如果程序退出,则相应的数据也将同时被销毁。连接JDBC的实例为:jdbc:hsqldb:mem:dbname
二、进行(In-Process)模式:此模式从应用程序启动数据库,由于所有的数据都将写到文件中,所以,即使程序退出,数据也不会被销毁。In-Process 不需要另外启动,可以通过
DriverManager.getConnection("jdbcUriName","username","password");
方式即可启动数据库。连接 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:
四、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 = DriverManager.getConnection("jdbc:hsqldb:", "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();
st.execute(sql);
sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES ('1', 'ADMIN', SYSDATE);";
st.executeUpdate(sql);
if (st != null) {
st.close();
}
c.close();
}
} catch(Exception e) {
System.out.println("ERROR:failed to load HSQLDB JDBC driver.");
e.printStackTrace();
return;
}
}
}
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:
启动 manageMydb.bat ,即可启动HSQLDB的图形界面管理工具
Hsqldb 的主要工具类:
org.hsqldb.util.DatabaseManager
org.hsqldb.util.DatabaseManagerSwing
org.hsqldb.util.Transfer
org.hsqldb.util.QueryTool
org.hsqldb.util.SqlTool
使用 JDBC 连接 HSQLDB 数据库
Java 语言通过 JDBC 使用 HSQLDB 数据库非常简单:
1,将 hsqldb.jar 加入到classpath
2,通过 Class.forName("org.hsqldb.jdbcDriver" ); 初始化 hsqldb 的 jdbc 驱动
3,通过 DriverManager.getConnection(hsqldb-url, user, password); 取得 HSQLDB 数据库的连接
使用例:
try {
Class.forName("org.hsqldb.jdbcDriver");
} catch (Exception e) {
System.out.println("ERROR:failed to load jdbc driver");
e.printStackTrace();
return;
}
Connection conn = DriverManager.getConnection("jdbc:hsqldb:");
其中,jdbc:hsqldb: 需要替换为合适的 jdbc-url 。
有关JDBC-URL的详细描述请参考HSQLDB的四种运行模式
在Hibernate里使用HSQLDB
著名的ORM工具Hibernate也提供了对 HSQLDB 数据库的支持。需要在Hibernage里使用 HSQLDB ,只需在 hibernate.cfg.xml 里加入类似如下设置:
true
org.hsqldb.jdbcDriver
jdbc:hsqldb:
SA
org.hibernate.dialect.HSQLDialect
其余就跟其他数据库的用法一样了,这里不再详述。
HSQLDB创建数据库和基本的数据库访问
一、 简介
Hsqldb是一个纯java编写的轻量级数据库,主要有三种运行模式:
1.Server模式
2.Standlone模式
3.Memory-Only模式
其中server模式又分为:
1.Hsqldb Server模式
2.Hsqldb Web Server模式
3.Hsqldb Servlet模式
二、 官网和最新版本
访问Hsqldb的官方地址:下载最新的hsqldb,下载地址:
我下载时的最新版本是2.1.0。下载后解压。
三、 使用HSQL数据库
下面介绍一下如何创建数据库:
1. 创建文件夹
在E盘下建立一个目录hsqldb文件夹(这个是任意建立的,呵呵),将hsqldb.jar拷贝到里面,然后再里边再建立一个data的文件夹(当然这个文件夹也是任意建立的,起其他名字也可以)如下图所示:
图0
2. 创建数据库
进入命令提示符,进入data文件夹,输入命令:
E:\hsqldb\data>java -cp ../hsqldb.jar org.hsqldb.Server -database mydb
这时候,data文件夹中就会出现两个文件:mydb.log 和 mydb.properties ,也就是创建了一个名称为mydb的数据库,如下图所示。注意,这也是数据库引擎的启动界面,如果将其关闭,第三步不能成功,因为数据库启动引擎关闭了,特别要注意,呵呵。
图1
生成的数据库文件如下图所示:
图2
3. 客户端工具
另外打开一个CMD终端,进入到E:\hsqldb\data目录,输入命令:java -cp ../hsqldb.jar org.hsqldb.util.DatabaseManager (注:还是在data目录执行这个命令),就会出现一个数据库控制界面,如图:(这里选择的是In-Memory模式,当然Server模式也可以)
图3
图4
4. 创建表及插入数据
下面咱们以Server运行模式为例介绍,点击“ok”按钮进入系统。在脚本执行框中,输入:
create table customer(id integer not null primary key,firstname varchar(60),lastname varchar(60));
点击“Execute”按钮,这样就创建了一个名字为customer的数据表。
再执行:
insert into customer values(1,'Anker','Jia');
点击Execute按钮,就插入了一条数据。
再执行:
select from customer;
就可以查询出这条数据了,如下图所示:
图5
如果现在我们把数据库运行引擎关闭,即关闭图1中所示的运行引擎。如果再次运行引擎,即:java -cp ../hsqldb.jar org.hsqldb.Server -database mydb ,就会在data文件夹中出现一个文件mydb.srcipt,这里面保存着数据执行文件,运行时会执行这个文件中sql语句。也就是说,数据以sql的形式保存在mydb.srcipt文件里面,再次运行引擎时,会再次插入这些保存的数据,这样会看到上次咱们建立的customer的数据表,如下图示:
图6
上面是启动数据库(包括建立)和查看的方法,供大家参考,如果要研究hibernate的一些特性,就需要像mysql,oracle等大型数据库服务了,一个小小的jar包,就是一个数据库,作为测试很是方便。
5. 给数据库起别名
创建命令:java -cp ../hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 sun
这时候,就给数据库起了一个叫sun的别名,访问时,需要在在localhost后面加一个sun,如示:jdbc:hsqldb:
如下图所示:
不然,不能访问。可以和图2做一下对比。
HSQL 学习笔记
1. hsql 学习
1.1. 学习目的
本文档是针对hSQL 数据库方面的基础学习,为了使项目组成员能够达到使用hSQL 数据库的目的。
1.2. 培训对象
开发人员
1.3. 常用词及符号说明
常用词:
hsql:一种免费的跨平台的数据库系统
E:\hsqldb:表示是在dos 命令窗口下面
1.4. 参考信息
doc\guide\guide.pdf
2. HSQL
2.1. HSQL 运行工具
java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager
注意hsqldb.jar 文件的文件路径,最好能放到classpath 里面,或者放到当前路径下.
java -cp hsqldb.jar org.hsqldb.util.DatabaseManager
2.2. 运行数据库
启动方式: Server Modes and
In-Process Mode (also called Standalone Mode).
一个test 数据库会包含如下文件:
? test.properties
? test.script
? test.log
? test.data
? test.backup
test.properties 文件包含关于数据库的一般设置.
test.script 文件包含表和其它数据库,插入没有缓存表的数据.
test.log 文件包含当前数据库的变更.
test.data 文件包含缓存表的数据
test.backup 文件是最近持久化状态的表的数据文件的压缩备份文件
所有以上这个文件都是必要的,不能被删除.如果数据库没有缓存表,test.data 和test.backup 文件将不会存在.另外,除了以上文件HSQLDB 数据库可以链接到任何文本文件,比如cvs 文件.
当操作test 数据库的时候, test.log 用于保存数据的变更. 当正常SHUTDOWN,这个文件将被删除. 否则(不是正常shutdown),这个文件将用于再次启动的时候,重做这些变更.test.lck 文件也用于记录打开的数据库的事实, 正常SHUTDOWN,文件也被删除.在一些情况下,test.data.old 文件会被创建,并删除以前的.
2.3. Server Mode
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb
命令行方式:
启动数据,数据库文件mydb,数据库名称xdb
也可以在 server.properties 文件中定义启动的数据库,最多10个
例如: server.properties:
server.database.0=file:E:/hsqldb/data/mydb
server.dbname.0=xdb
server.database.1=file:E:/hsqldb/data/testdb
server.dbname.1=testdb
server.database.2=mem:adatabase
server.dbname.2=quickdb
启动命令: java -cp ../lib/hsqldb.jar org.hsqldb.Server
运行结果如下
java 测试程序:
package test;
import junit.framework.TestCase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestConnect extends TestCase {
Connection connection;
protected void setUp()
{
try {
Class.forName("org.hsqldb.jdbcDriver" );
connection = DriverManager.getConnection("jdbc:hsqldb:","sa","");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testselect()
{
Statement stmt=null;
ResultSet rs=null;
try {
stmt = connection.createStatement();
String sql ="select * from test";
rs=stmt.executeQuery( sql);
while(rs.next() )
{
System.out.println("id="+rs.getString("id"));
System.out.println("name="+rs.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
rs.close() ;
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
protected void tearDown()
{
try {
&nb