1、主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文 lunch 等级: 文章: 35 积分: 111 来自: 石家庄 发表时间:2007-05-11 关键字: HSQLDB 相关文章: HSQLDB介绍转 让 Hsqldb随 WebAPP一起启动 详解用 radrails调试 rails应用程序 推荐圈子: Groovy on Grails 更多相关推荐 Hsqldb是一个开放源代码的 JAVA数据库,其具有标准的 SQL语法和 JAVA接口,它可以自由使用和分发,非常简洁和快速的。具有 Server模式,进程内模式(In-Process)和内存模式(Memory-Only)三种
2、。运行 Hsqldb需要 hsqldb.jar包, 它包含了一些组件和程序。每个程序需要不同的命令来运行。它位于项目的 lib目录下,目前的版本是 1.8.0.5。官方的下载地址是:http:/ 在介绍这些模式之前我们需要了解一些 Hsqldb所涉及的一些文件。每个 Hsqld数据库包含了 2到 5个命名相同但扩展名不同的文件,这些文件位于同一个目录下。例如,名位“test“的数据库包含了以下几个文件: test.properties test.script test.log test.data test.backup properties文件描述了数据库的基本配置。 script 文件记录了
3、表和其它数据库对象的定义。log 文件记录了数据库最近所做的更新。data 文件包含了 cached(缓冲)表的数据,而 backup文件是将 data文件压缩备份,它包含了 data文件上次的最终状态数据。所有这些文件都是必不可少的,千万不可擅自删除。但如果你的数据库没有缓冲表(cached table),test.data 和 test.backup文件是不会存在。接下来我们对 Hsqldb的三种模式进行简单介绍,同时包括部分工具的启动的方式。一、 Server 模式 Server 模式提供了最大的可访问性。应用程序(客户端)通过 Hsqldb的 JDBC驱动连接服务器。在服务器模式中,服
4、务器在运行的时候可以被指定为最多 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现在你可能会疑惑,-d
5、atabase.0 、 dbname.0为什么在后面加0。 _. .我们不是在前面说服务模式运行的时候可以指定 10个数据库吗,如有多个数据库,则继续写命令行参数-database.1 aa -dbname.1 aa -database.2 bb-dbname.2 bb . .新建文本文件保存上面命令,文件名可以随意,将后缀名改成 bat,然后直接执行批处理文件即可。在以后介绍的执行启动工具的命令采用同样方法。主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文上面启动服务器的命令启动了带有一个(默认为一个数据库)数据库的服务器,这个数据库是一个名为“mydb.*“文件,这些文件就
6、是 mydb.Properties、mydb.script、mydb.log 等文件。其中 demoDB是 mydb的别名,可在连接数据库时使用。 2、 Hsqldb Web Server这种模式只能用在通过 HTTP协议访问数据库服务器主机,采用这种模式唯一的原因是客户端或服务器端的防火墙对数据库对网络连接强加了限制。其他情况下,这种模式不推荐被使用。运行 web服务器的时候,只要将刚才命令行中的主类(main class)替换成:org.hsqldb.WebServer3、 Hsqldb Servlet这种模式和 Web Server一样都采用 HTTP协议,当如 Tomcat或 Resi
7、n等 servlet引擎(或应用服务器)提供数据库的访问时,可以使用这种模式。但是 Servlet模式不能脱离 servlet引擎独立启动。为了提供数据库的连接,必须将 HSQLDB.jar中的hsqlServlet类放置在应用服务器的相应位置。Web Server 和 Servlet模式都只能在客户端通过 JDBC驱动来访问。Servlet 模式只能启动一个单独的数据库。请注意做为应用程序服务器的数据库引擎通常不使用这种模式。连接到以 Server模式运行的数据库当 HSQLDB服务器运行时,客户端程序就可以通过 hsqldb.jar中带有的 HSQLDB JDBC Driver连接数据库。
8、java 代码1. try 2. 3. Class.forName(“org.hsqldb.jdbcDriver“) ; 4. 5. catch(ClassNotFoundException e) 6. 7. e.printStackTrace(); 8. 9. 10. 11. Connection c = DriverManager.getConnection(“jdbc:hsqldb:hsql:/localhost/xdb“, “sa“, “); 12. 注:hsqldb 的默认用户是 sa密码为空。修改默认密码的方法我们将在工具使用部分做出介绍。二、 In-Process 模式In-Pr
9、ocess模式又称 Standalone模式。这种模式下,数据库引擎作为应用程序的一部分在同一个 JVM中运行。对于一些应用程序来说, 这种模式因为数据不用转换和通过网络的传送而使得速度更快一些。其主要的缺点就是默认的不能从应用程序外连接到数据库。所以当应用程序正在运行的时候,你不能使用类似于 Database Manager的外部工具来查看数据库的内容。在1.8.0版本中,你可以从同一个 JVM的一个线程里面来运行一个服务器实例,从而可以提供外部连接来访问你的 In-Process数据库。主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文推荐的使用 In-Process模式方式
10、是:开发的时候为数据库使用一个 HSQLDB 服务器实例,然后在部属的时候转换到 In-Process内模式。一个 In-Process模式数据库是从 JDBC语句开始启动的,在连接 URL中带有指定的数据库文件路径作为 JDBC的一部分。例如,假如数据库名称为 testdb,它的数据库文件位于与确定的运行应用程序命令相同的目录下,下面的代码可以用来连接数据库:Connection c = DriverManager.getConnection(“jdbc:hsqldb:file:testdb “, “sa“, “);数据库文件的路径格式在 Linux主机和 Windows主机上都被指定采用前
11、斜线(“/“)。所以相对路径或者是相对于相同分区下相同目录路径的表达方式是一致的。使用相对路径的时候,这些路径表示的是相对于用于启动 JVM的 shell命令的执行路径。三、Memry-Only 数据库Memory-Only 数据库不是持久化的而是全部在随机访问的内存中。因为没有任何信息写在磁盘上。这种模式通过 mem:协议的方式来指定:Connection c = DriverManager.getConnection(“jdbc:hsqldb:mem:dbName“, “sa“, “);你也可以在 server.properties中指定相同的 URL来运行一个 Memory-Only(仅
12、处于内存中)服务器实例。注意事项:当一个服务器实例启动或者建立一个 in-process数据库连接的时候,如果指定的路径没有数据库存在,那么就会创建一个新的空的数据库。这个特点的副作用就是让那些新用户产生疑惑。在指定连接已存在的数据库路径的时候,如果出现了什么错误的话,就会建立一个指向新数据库的连接。为了解决这个问题,你可以指定一个连接属性 ifexists=true只允许和已存在的数据库建立连接而避免创建新的数据库,如果数据库不存在的话,getConnection()方法将会抛出异常。四、 工具的使用Hsqldb 提供的主要的工具类: org.hsqldb.util.DatabaseMana
13、ger org.hsqldb.util.DatabaseManagerSwing org.hsqldb.util.Transfer org.hsqldb.util.QueryTool org.hsqldb.util.SqlTool 其中 DatabaseManage和 Sql Tool,只能用命令行参数来运行。你可以在命令行后面加上参数-?来查看这些工具可用的参数列表。其他工具可以通过 DatabaseManager的主界面启动,便于交互式操作。为了便于操作,我们同样把这些工具启动的命令做成批处理文件。方法和前面我们所介绍的创建启动服务模式命令的方法一样。在这里我们再强调一次 hsqldb.j
14、ar的位置,因为所有启动命令都是参照 hsqldb.jar的位置编写的如果您觉得麻烦你也可以采用绝对路径编写命令。主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文现在我们一起运行 AWT版本的 DatabaseManager工具,hsqldb.jar 位于相对于当前路径的/lib 下面,命令如下:Java -cp /lib/hsqldb.jar org.hsqldb.util.DatabaseManager将命令保存为后缀名为 bat的批处理文件,保存为 DatabaseManager.bat,也可根据个人习惯命名。执行 DatabaseManager.bat你将看到如下画面:
15、。现在对这个简洁的登录界面做个简单的介绍*_* Recent:选择你最近的登录方案,可选 Setting Name:本次登录方案名称,如果本次登录成功,那么等你下次登录的时候在 Recent下拉列表中将看到你的成功登录方案可选 Type:登录模式,其中包括 In-Memory模式、Standalone(In-process)模式、Server 模式、WebServer 模式. .必选 Driver:连接数据库的驱动程序必选 URL:连接数据库的 URL必选 User:用户名必选 Password:密码 除非密码为空 注:如果 Type项选择 Server模式或者 WebServer模式需要你事
16、先启动与之对应的服务模式。而 Standalone(In-process)默认是不支持 DatabaseManager连接的,具体原因我们已经在前面解释过。至于 In-Memory可以随意登录,所有的操作数据都不会记录在本地磁盘。而 Type还有很多其他选项,具体的用法可以参考官方文档,位置在 hsqldb目录docguide guide.pdf。如果你想运行 DatabaseManagerSwing也很简单,相信你已经想到了。我们只需要把启动 DatabaseManager命令修改成:Java -cp /lib/hsqldb.jar org.hsqldb.util. DatabaseMana
17、gerSwing主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文两种工具的操作方法类似,这里就不再赘述。差点忘记,前面我说过要给出修改 sa用户密码的方法。最后再占用大家一点点时间。当你用 SA通过 DatabaseManager登录成功后会出现如下界面:在右上方的空白区域输入 set password “newpassword“ 点击执行即可。到这里我们对 Hsqldb的简单介绍就结束了。本文参考自 Hsqldb的官方文档,个人水平有限难免出现错误, 查看图片附件 声明:JavaEye 文章版权属于作者,受法律保护。没有作者书面许可不得转载。 推荐链接 返回顶楼 shaucl
18、e 等级: 文章: 436 积分: 443 来自: 上海 发表时间:2007-05-11 楼主似乎没粘贴完http:/hsqldb.org/web/hsqlDocsFrame.html内存协议加了个 mem:一个 server支持 10个 schema(or database) 主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文返回顶楼 回帖地址 0 0 请登录后投票 lunch 等级: 文章: 35 积分: 111 来自: 石家庄 发表时间:2007-05-11 刚使用 javaeye的博客,还不适应,终于把整篇文章写完了。 :arrow : 返回顶楼 回帖地址 0 0 请登录
19、后投票 shaucle 等级: 文章: 436 积分: 443 来自: 上海 发表时间:2007-05-12 看下 hsqldb对于理解数据库和 jdbc有很好的帮助.其体积小巧,一些概念也设计得很不错.只是有些类太大了(不过还算过得去的说) 返回顶楼 回帖地址 0 0 请登录后投票主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文 xly_971223 等级: 文章: 993 积分: 580 来自: 北京 发表时间:2007-05-13 问一下楼主 hsqldb 的 script文件是怎么生成的?手工敲的呢还是有什么工具导出的 还是用的 hibernate的 hbm2ddl?
20、返回顶楼 回帖地址 0 0 请登录后投票 lunch 等级: 文章: 35 积分: 111 来自: 石家庄 发表时间:2007-05-14 HSQLDB的 script文件也就是数据库的主文件,你用记事本打开就可以看到里面都是一些 sql语句。hsqldb 是以纪录脚本的形式保存数据的,由此可以看出 script文件肯定不是用手工敲的。它是我们运行 hsqldb数据库后自动生成的。 当然这里更加没有 Hibernate什么事情了。因为这个文件和 Hibernate没有任何关系。 返回顶楼 回帖地址 0 0 请登录后投票 xly_971223 等级: 发表时间:2007-05-14 lunch
21、写道HSQLDB的 script文件也就是数据库的主文件,你用记事本打开就可以看到里面都是一些 sql语句。hsqldb 是以纪录脚本的形式保存数据的,由此可以看出 script文件肯定不是用工敲的。它是我们运行 hsqldb数据库后自动生成的。 当然这里更加没有 Hibernate什么事情了。因为这个文件和 Hibernate没有任何关系。test.script Java代码 主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文 文章: 993 积分: 580 来自: 北京 1. CREATE SCHEMA PUBLIC AUTHORIZATION DBA 2. CREATE M
22、EMORY TABLE USER(USER_ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL,USER_NAME VARCHAR(80) NOT NULL,AGE INTEGER , CONSTRAINT PK_USER PRIMARY KEY(USER_ID) 3. CREATE MEMORY TABLE custom_order(order_id INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL,custom_id INTEGER
23、 NOT NULL,receiver_name varchar(16),receiver_addr varchar(256),receiver_phone varchar(16),receiver_postalcode varchar(8),receiver_email varchar(64),invoice_info varchar(1024),order_state char(1),order_date timestamp, CONSTRAINT PK_order PRIMARY KEY(order_id) 4. 5. CREATE USER SA PASSWORD “ 6. GRANT
24、DBA TO SA 7. SET WRITE_DELAY 20 8. SET SCHEMA PUBLIC 9. 10.INSERT INTO USER VALUES(1,XULY,27) 这些 create table ,insert 等语句是怎么产生的? 返回顶楼 回帖地址 0 0 请登录后投票 lunch 等级: 文章: 35 积分: 111 来自: 石家庄 发表时间:2007-05-14 因为你执行了对应的操作啊。 当你启动数据库执行创建表,增加数据的时候就会生成对应的 sql语句。删除操作不会记录在 script文件中。 当然这里的创建操作可能是由 Hibernate通过配置文件自动创
25、建的,也可能是你自己书写 sql语句(create table xxx .)等来实现操作的。但是 Hsqldb都会自动在 xx.script文件中追加对应的 sql语句,前提是你正确的结束本次对数据库的操作。如果没有以正确的方式退出 hsqldb那么会增加*.lck 和*.log 文件,来记录你的操作,直到你正确保存数据并且退出数据库,这两个文件才会消失。 正确的退出数据库是执行 shutdown命令 返回顶楼 回帖地址 0 0 请登录后投票 shaucle 等级: 发表时间:2007-05-14 xly_971223 写道问一下楼主 hsqldb 的 script文件是怎么生成的?手工敲的呢
26、还是有什么工具导出的 还是用的 hibernate的 hbm2ddl?主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文 文章: 436 积分: 443 来自: 上海 手工敲. script就是 db文件 返回顶楼 回帖地址 0 0 请登录后投票 lunch 等级: 文章: 35 积分: 111 来自: 石家庄 发表时间:2007-05-14 主题:推荐一个好的小工具-HSQLDB精华帖 (0) : 良好帖 (0) : 新手帖 (0) : 隐藏帖 (0)作者 正文 ChinaEstone 等级: 初级会员 文章: 10 发表时间:2009-09-16 相关文章: HSQLDB介绍
27、转 Hsqldb简介和基本使用 谈一下纯 java数据库 hsqldb的 standalone(in-process)模式 推荐圈子: Groovy on Grails 主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文 积分: 10 来自: 中国山东 更多相关推荐 很久以前就听说过有一个纯 Java的数据,由于时间长了,忘了它的名字,今天终于与“故人”重逢。最近一直在做 Hibernate缓存方面的工作,所以就拿来了 Hibernate的文档翻了一下,复习一下已经抛在在脑后的知识。在浏览 Hibernate文档时看到了关于 Hibernate中的一个例子-caveatempto
28、r,这个例子演示了 Hibernate常用的一些操作,是 Hibernate学习入门不可多得的例子,它用到的数据就是 HSQLDB。说到了这里再啰嗦几句 HSQLDB的几个特点:(1)纯 Java编写、开源免费软件。(2)支持标准 SQL。这一点对与初学数据库的童鞋来说是一个很好的入门的软件。操作简单,界面简洁。没有冗余的结构和功能,是数据学习入门学习不错的工具。当然对于想学习和了解数据库的同志们来说,看看源码也会受益匪浅。(3)这里要说说 HSQLDB的局限性,HSQLDB 并不是一个正式的数据库产品,如果用来做为商业应用数据库或者说开发时的数据库,个人感觉不妥。这点在 HSQLDB的官方文
29、档里也提到了。Java代码 1. This example application is designed for programmers who are new to the JDBC. 2. 不过对于开发者来说如果进行简单测试或者对一些程序的模块的调试它是一个不错的选择,这个就看你自己的爱好了。好了,说了这么多先看看怎么使用这个小家伙吧。首先,安装 HSQLDB。从官网上下载 hsqldb_1_8_1_1.zip(网址就 Google一下吧),解压后将其放到你常用软件的安装目录中,我将解压后的文件重命名为 hsqldb(这个不会影响你的使用的,呵呵),然后放到 d:hsqldb下。这样就完
30、成了安装的第一步了。接着,我们要在环境变量中添加 hsqldb.jar文件所在的路径,即在系统环境变量 classpath中添加 d:hsqldblibhsqldb.jar(和添加 JDK环境变量类似)。这样我们就完成了 HSQLDB的安装,安装好了之后我们应该如何使用呢?别急,往下看(算了,还是截图吧,清晰点)。在 cmd中进入到 d:hsqldblib目录下,主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文这时候使用 dir命令我们可以看到 hsqldb.jar文件了,然后在该目录下输入:java org.hsqldb.Server 命令,这样就启动了 hsqldb数据库了
31、。默认配置下数据库的启动端口为 9001.你也可以在 d:hsqldb目录下创建一个 server.properties的属性文件,来根据自己的需要来做相应的配置,这里就不多讲了,请参看文档。下图是 hsqldb运行时的情况。主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文如果我们这样在 Cmd中调试数据库是相当麻烦的,还好 hsqldb的开发人员给我们提供了一个 Swing的图形界面的管理工具。可以在 cmd中启动该工具(注意启动的目录和启动 hsqldb的目录相同),输入:java org.hsqldb.util.DatabaseManager,这样就启动了 hsqldb的
32、管理工具,运行界面如下:主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文进入到启动界面后,在 Setting Name中输入任意的名字,这个名字会在 Recent中保存,如果你不需要的时候可以用 Recent左边的 clr清除掉。然后在 Type中选择“HSQL Database Engine Server”这样就创建了一个在硬盘上保存数据的数据库,点击 ok进入管理界面。主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文你可以在中间的输入框中执行 sql语句。Clear 为清除。Excute 为执行你输入的 sql语句。上图中是我自己写的测试的一个数据库,呵呵。好了,hsqldb 的配置和使用就这么多,希望对大伙能有帮助。为了启动和使用的时候方便,你可以把上面用到的命令用批处理文件来执行,那么每次启动的时候只要双击一下.bat 文件就行了,记住在运行 Java命令的时候一定要配置好你的环境变量,批处理文件的编写在网上找下吧,不是很麻烦的。主题:Hsqldb 简介和基本使用该帖已经被评为良好帖作者 正文 推荐一个好的小工具-HSQLDB.pdf (235.7 KB) 下载次数: 103