Hsqldb是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。具有Server模式,进程内模式(In-Process)和内存模式(Memory-Only)三种。运行Hsqldb需要hsqldb.jar包, 它包含了一些组件和程序。每个程序需要不同的命令来运行。它位于项目的lib目录下,目前的版本是1.8.0.5。官方的下载地址是:http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_8_0_5.zip?download
在介绍这些模式之前我们需要了解一些Hsqldb所涉及的一些文件。每个Hsqld数据库包含了2到5个命名相同但扩展名不同的文件,这些文件位于同一个目录下。例如,名位"test"的数据库包含了以下几个文件:
properties文件描述了数据库的基本配置。 script文件记录了表和其它数据库对象的定义。log文件记录了数据库最近所做的更新。data文件包含了cached(缓冲)表的数据,而backup文件是将data文件压缩备份,它包含了data文件上次的最终状态数据。所有这些文件都是必不可少的,千万不可擅自删除。但如果你的数据库没有缓冲表(cached table),test.data和test.backup文件是不会存在。
一、 Server模式
Server模式提供了最大的可访问性。应用程序(客户端)通过Hsqldb的JDBC驱动连接服务器。在服务器模式中,服务器在运行的时候可以被指定为最多10个数据库。根据客户端和服务器之间通信协议的不同,Server模式可以分为以下三种:
1、 Hsqldb Serve
这种模式是首选的也是最快的。它采用HSQLDB专有的通信协议。启动服务器需要编写批处理命令。Hsqldb提供的所有工具都能以java class归档文件(也就是jar)的标准方式运行。假如hsqldb.jar位于相对于当前路径的../lib下面。我们的命令将这样写:
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 demoDB
现在你可能会疑惑,[-database.0 ]、 [dbname.0]为什么在后面加[0]。_... ...我们不是在前面说服务模式运行的时候可以指定10个数据库吗,如有多个数据库,则继续写命令行参数-database.1 aa -dbname.1 aa -database.2 bb-dbname.2 bb ... ...
新建文本文件保存上面命令,文件名可以随意,将后缀名改成bat,然后直接执行批处理文件即可。在以后介绍的执行启动工具的命令采用同样方法。
上面启动服务器的命令启动了带有一个(默认为一个数据库)数据库的服务器,这个数据库是一个名为"mydb.*"文件,这些文件就是mydb.Properties、mydb.script、mydb.log等文件。其中demoDB是mydb的别名,可在连接数据库时使用。<o:p></o:p>
<o:p>2、 Hsqldb Web Server</o:p>
<o:p> 这种模式只能用在通过HTTP协议访问数据库服务器主机,采用这种模式唯一的原因是客户端或服务器端的防火墙对数据库对网络连接强加了限制。其他情况下,这种模式不推荐被使用。</o:p>
<o:p> 运行web服务器的时候,只要将刚才命令行中的主类(main class)替换成:org.hsqldb.WebServer</o:p><o:p></o:p>
3、 Hsqldb Servlet
这种模式和Web Server一样都采用HTTP协议,当如Tomcat或Resin等servlet引擎(或应用服务器)提供数据库的访问时,可以使用这种模式。但是Servlet模式不能脱离servlet引擎独立启动。为了提供数据库的连接,必须将HSQLDB.jar中的hsqlServlet类放置在应用服务器的相应位置。
Web Server和Servlet模式都只能在客户端通过JDBC驱动来访问。Servlet模式只能启动一个单独的数据库。请注意做为应用程序服务器的数据库引擎通常不使用这种模式。<o:p></o:p>
连接到以Server模式运行的数据库
当HSQLDB服务器运行时,客户端程序就可以通过hsqldb.jar中带有的HSQLDB JDBC Driver连接数据库。
java 代码
- try{
-
- Class.forName("org.hsqldb.jdbcDriver") ;
-
- }catch(ClassNotFoundException e){
-
- e.printStackTrace();
-
- }
-
- Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "sa", "");
-
注:hsqldb的默认用户是sa密码为空。修改默认密码的方法我们将在工具使用部分做出介绍。
<o:p></o:p> 二、 In-Process模式
In-Process模式又称Standalone模式。这种模式下,数据库引擎作为应用程序的一部分在同一个JVM中运行。对于一些应用程序来说, 这种模式因为数据不用转换和通过网络的传送而使得速度更快一些。其主要的缺点就是默认的不能从应用程序外连接到数据库。所以当应用程序正在运行的时候,你不能使用类似于Database Manager的外部工具来查看数据库的内容。在<st1:chsdate month="12" islunardate="False" day="30" year="1899" w:st="on" isrocdate="False">1.8.0</st1:chsdate>版本中,你可以从同一个JVM的一个线程里面来运行一个服务器实例,从而可以提供外部连接来访问你的In-Process数据库。
推荐的使用In-Process模式方式是:开发的时候为数据库使用一个HSQLDB 服务器实例,然后在部属的时候转换到In-Process内模式。
一个In-Process模式数据库是从JDBC语句开始启动的,在连接URL中带有指定的数据库文件路径作为JDBC的一部分。例如,假如数据库名称为testdb,它的数据库文件位于与确定的运行应用程序命令相同的目录下,下面的代码可以用来连接数据库:
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb<v:shapetype id="_x0000_t75" o:spt="75" coordsize="21600,21600" stroked="f" filled="f" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"> <v:stroke join=""></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" o:extrusionok="f" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" title="" visit="" type="#_x0000_t75" o:button="t" page="" outside="" alt=""><v:imagedata o:href="http://130.1.11.14:7001/wiki/images/icons/linkext7.gif" src="file:///C:\DOCUME~1\lunch\LOCALS~1\Temp\msohtml1\12\clip_image001.gif"></v:imagedata></v:shape>", "sa", "");
数据库文件的路径格式在Linux主机和Windows主机上都被指定采用前斜线("/")。所以相对路径或者是相对于相同分区下相同目录路径的表达方式是一致的。使用相对路径的时候,这些路径表示的是相对于用于启动JVM的shell命令的执行路径。
三、Memry-Only数据库
Memory-Only数据库不是持久化的而是全部在随机访问的内存中。因为没有任何信息写在磁盘上。这种模式通过mem:协议的方式来指定:
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:dbName", "sa", "");
你也可以在server.properties中指定相同的URL来运行一个Memory-Only(仅处于内存中)服务器实例。
注意事项:当一个服务器实例启动或者建立一个in-process数据库连接的时候,如果指定的路径没有数据库存在,那么就会创建一个新的空的数据库。这个特点的副作用就是让那些新用户产生疑惑。在指定连接已存在的数据库路径的时候,如果出现了什么错误的话,就会建立一个指向新数据库的连接。为了解决这个问题,你可以指定一个连接属性ifexists=true只允许和已存在的数据库建立连接而避免创建新的数据库,如果数据库不存在的话,getConnection()方法将会抛出异常。
四、 工具的使用
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
[摘自]http://www.iteye.com/topic/78887
分享到:
相关推荐
HSQldb是一个轻量级的关系型数据库管理系统,特别适合用于系统演示、开发和测试环境。它的特点是快速、灵活且易于使用。HSQldb支持多种运行模式,满足不同场景的需求。 1. **数据库实例创建** 创建HSQldb数据库...
**HSQLDB(HyperSQL Database)详解** HSQLDB,全称HyperSQL数据库管理系统,是一款开源、轻量级、高性能的关系型数据库系统。它支持Java平台,并且完全遵循SQL标准,提供内存和磁盘两种存储方式,使得它适用于多种...
**HSQldb 2.2.8 数据库详解** HSQldb(HyperSQL Database)是一款高效、轻量级且开源的Java数据库管理系统,它在IT领域中被广泛应用于开发、测试以及小型应用环境。HSQldb完全用Java编写,因此具有良好的跨平台性,...
**HSQldb 2.25 知识点详解** HSQldb,全称为HyperSQL Database,是一款开源、轻量级、嵌入式的关系型数据库管理系统。它支持标准的SQL语法,包括SQL-92和SQL:2003,且在Java环境中运行,无需依赖外部操作系统服务。...
hsqldb数据库下载,很好用,简易的内存数据库,特别适合初学者。
HSQldb,全称HyperSQL Database,是一款开源的、轻量级的关系型数据库管理系统,尤其适合于嵌入式应用和开发测试环境。HSQldb完全用Java编写,因此具有跨平台性,能在任何支持Java的环境中运行,包括Windows操作系统...
《HSQldb与Java数据库连接详解》 HSQldb(HyperSQL Database)是一款开源、轻量级、嵌入式的关系型数据库管理系统,广泛应用于Java应用程序中。它支持SQL标准,提供单用户和多用户模式,并且可以运行在内存中或磁盘...
### HSQLDB中文帮助文档知识点总结 #### 一、HSQLDB概述 - **定义**:HSQLDB(HyperSQL Database)是一款轻量级、开源的纯Java SQL数据库管理系统。它能够作为嵌入式数据库使用,也可以作为一个独立的服务器运行。 ...
hsqldb jdbc driver适合于hsqldb
**HSQldb 概述** HSQldb,全称 HyperSQL Database,是一个开源、轻量级、完全Java编写的数据库管理系统。它支持多种数据库模式,包括纯内存储存、文件系统存储以及网络服务器模式,使其在多种场景下都能发挥效用。...
《开源数据库软件HSQldb深度解析》 HSQldb,全称HyperSQL Database,是一款完全开源、免费的Java实现的关系型数据库管理系统(RDBMS),它支持多种运行环境,包括独立服务器模式、嵌入式模式以及Web应用。HSQldb因...
HSQldb是一个开源的、轻量级的、嵌入式的Java数据库引擎,常用于开发测试环境和小型应用程序。它的全称是HyperSQL Database,能够支持SQL标准,包括SQL:2011。HSQldb因其小巧、快速和易用的特点,在Java开发中尤其受...
《HSQLDB 1.8.0:轻量级数据库引擎的深度剖析》 HSQLDB,全称为HyperSQL Database,是一款开源、轻量级、高性能的关系型数据库管理系统,广泛应用于嵌入式系统和测试环境。HSQLDB 1.8.0是该数据库引擎的一个重要...
《HSQldb 2.3.3:轻量级数据库引擎深度解析》 HSQldb,全称为HyperSQL Database,是一款开源、纯Java语言编写的轻量级关系型数据库管理系统,广泛应用于测试环境、嵌入式系统以及小型应用中。HSQldb 2.3.3是其稳定...
### HSQLDB中文手册知识点概览 #### 一、HSQLDB概述与核心特性 HSQLDB,全称HyperSQL Database,是一款轻量级、开源的纯Java关系型数据库管理系统,以其高性能、高兼容性和易用性而著称。HSQLDB完全由Java语言编写...
标题 "hsqldb相关几个文件" 提到的是与HSQldb相关的压缩包资源,HSQldb是一个开源的关系型数据库管理系统,特别适用于Java应用程序。描述中提及的有两个zip文件:hsqldb_1_8_0_10.zip 和 hsqldb-mini.zip,以及一个...