我的漫漫程序之旅
专注于JavaWeb开发
Hsqldb 简单使用指南
一、简介:
hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议。
相对其他数据库来说,其体积小,才3276605bytes。
仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动,还有其他用户界面操作等内容。
最新版本是
hsqldb_1_8_0_7
,下载地址:
http://hsqldb.org/
二、使用hsql数据库:
1、hsql数据库引擎有几种服务器模式:常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-On­ly数据库。
2、
最为常用的Server模式
:
1)首先却换到lib文件夹下,运行
java -cp hsqldb.jar org.hsqldb.Server -database db/mydb -dbname xdb
执行命令后,将会在db文件夹下创建一个数据库mydb,别名(用于访问数据库)是xdb,如果存在mydb数据库,将会打开它。
2)运行数据库界面操作工具:
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 = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");
将会在当前目录找到mydb数据库相关文件,打开并返回一个Connection对象。该方式有点好处就是可以不使用引擎,在需要的时候操作数据。所以那些对数据库不是特别有要求的,但又需要一个操作数据库的方式的话,可以使用这种方法。对于那些不想额外在数据库引擎花费金钱的话,可以使用这种方法。但是不推荐使用该方法。记得Hibernate里SessionFactory可以使用openSession(Connecttion c)来获得一个Session对象的,因此,在测试或者实际应用的话都可以这样使用。
6、
Memory-Only
数据库:顾名思义,主要是内存中使用,不用于保存数据。可以用于在内存中交换数据。
上面是关于hsqldb的一些基本信息的介绍,可以看到它的一些优势和特性。
我们可以把hsqldb内置在web程序中,除考虑Standalone模式外,最好是采用最为常用的Server模式。
那么Server模式如何和web程序合理搭配使用呢。
可以采用两种方式:
1)采用上面提到的方法,运行
java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
来启动db,通过设置的
URL:jdbc:hsqldb:hsql://xdb
以达到在程序中访问hsql数据库的
(注:设置URL等信息,可以通过hibernate来配置,例如:
hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:hsql://localhost/xdb )
2)为了省去第一种方法的琐碎,可以在启动web容器的过程中同时启动hsqldb。具体做法如下:编写一个有关hsql的Listener类,扩展javax­.servlet.ServletContextListener,可以在配置文件中设置dbPath、dbName、port等等hsqldb的信息,启动h­sqldb。
在web.xml中配置
<listener>
<listener-class>com.iplan.portal.framework.web.HsqlListener</listener-class­>
</listener>
这样在启动web容器的时候,同时启动了hsqldb,关闭容器的时候同时也shutdown掉hsqldb。
还有一点说明的是:在单体或是结合测试的时候,可以采用Memory-Only
数据库,这样可以保证原有数据库中数据的完整性,这也是比较好的一个功能。
posted on 2008-08-13 16:41
々上善若水々
阅读(236)
评论(0)
编辑
收藏
所属分类:
数据库
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-08-13 16:46 编辑过
相关文章:
Oracle 常用语法练习
SQL分割字符串详解
SQL数据旋转的问题
使用Transact-SQL 遍历结果集
SQL之通用查询分页存储过程
SQL:删除表中重复的记录
Hsqldb 简单使用指南
两表联合查询行转列问题
简单的行列互转问题
使用虚拟索引进行数据库优化
导航
首页
新随笔
联系
管理
<
2009年7月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
统计
随笔 - 33
文章 - 291
评论 - 220
引用 - 0
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔档案
(36)
2009年7月 (1)
2009年5月 (2)
2009年4月 (2)
2009年3月 (1)
2009年2月 (3)
2009年1月 (1)
2008年12月 (2)
2008年11月 (3)
2008年9月 (2)
2008年8月 (1)
2008年7月 (2)
2008年6月 (2)
2008年5月 (9)
2008年4月 (2)
2007年12月 (3)
文章分类
(289)
AJAX(7)
(rss)
flex3(1)
(rss)
Hibernate(3)
(rss)
J2ME(2)
(rss)
J2SE(39)
(rss)
JavaScript(58)
(rss)
JavaWeb(24)
(rss)
Java笔试与面试(52)
(rss)
JQuery(1)
(rss)
opensource(13)
(rss)
Spring(10)
(rss)
SSH整合系列(2)
(rss)
Struts1.x(3)
(rss)
Struts2(12)
(rss)
WebService(14)
(rss)
数据库(14)
(rss)
数据结构与算法(7)
(rss)
设计模式(17)
(rss)
软件测试(10)
(rss)
文章档案
(240)
2009年6月 (1)
2009年4月 (3)
2009年3月 (3)
2009年1月 (2)
2008年12月 (4)
2008年11月 (4)
2008年10月 (2)
2008年9月 (2)
2008年8月 (10)
2008年7月 (22)
2008年6月 (13)
2008年5月 (45)
2008年4月 (17)
2008年3月 (5)
2008年2月 (11)
2008年1月 (27)
2007年12月 (45)
2007年11月 (24)
搜索
最新评论
1. re: JSP实现点击链接后下载文件(相当于右键另存)功能
原来还有这么清晰的方法啊
--blackbat
2. re: javascript文件夹选择框的两种解决方案
,呵呵,谢谢能分享
--明君
3. re: Struts1.x中的令牌(Token)使用
非常好,非常好,非常好
--GloomySunday
4. re: 两个变量交换的三种方法
不知道
--大使
5. re: SQL分割字符串详解
写的很不错!
--马晓伟
阅读排行榜
1. 一道Struts面试题(4496)
2. javascript文件夹选择框的两种解决方案(3565)
3. ExtJS & GTGrid 简单用户管理(2824)
4. Flash图表(FusionChartsV3)的简单应用 (2529)
5. jexcelapi使用小记(2477)
评论排行榜
1. Flash图表(FusionChartsV3)的简单应用 (22)
2. [原创]J2ME/J2EE实现用户登录交互(8)
3. 基于jsTree的无限级树JSON数据的转换(8)
4. WEB页面导出为Word文档后分页&横向打印的方法 (8)
5. Flash图片轮换显示的效果抽取(7)