- 浏览: 1031207 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (675)
- ios (214)
- android-course (5)
- unity3d (7)
- cocos2d (36)
- html5 (3)
- game (5)
- android (42)
- java (57)
- php (12)
- 创业 (10)
- SEO (3)
- 架构 (2)
- 数据库 (3)
- 产品设计 (9)
- 操作系统 (10)
- Web前端 (11)
- 其他 (50)
- GAE (1)
- mac os (8)
- Open Source (2)
- 序列号 (10)
- C (2)
- database (2)
- 算法 (6)
- 设计模式 (1)
- photoshop (1)
- 3dmax (1)
- maya (1)
- opengl (3)
- 游戏设计 (1)
- 趋势 (1)
- cocos2d-x (4)
- shell (3)
- c++ (30)
- lua (5)
- flash (1)
- spring (3)
- mysql (4)
- Git (6)
- xmpp (1)
- cocos2dx (14)
- mac (2)
- 编程规范 (2)
- windows (1)
- linux (5)
- coocs2dx (1)
- ubuntu (2)
- aws (1)
- OPENGLES (1)
- 原画 (1)
最新评论
-
jlees:
Best mobile app testing tool pc ...
iOS + XCode 4 + GHUnit = Mobile TDD+Continuous testing -
ipanda:
楼主,能否给一个Micro CloudFoundry的虚机或者 ...
Cloud Foundry使用及开发向导 -
love_zongming:
谢谢分享。。
visio2007序列号 -
雨花台舞水:
你这才是枪文把
套在 360 黑匣子外面的黑盒子:你被技术型枪稿吓到了么? -
hugh.wang:
改天试试
Mac版魔兽争霸3 1.24e下载
hsqldb是一个完全用java编写的数据库,既可以独立运行也可以嵌入java开发的项目中。整个jar包只有600多K,是测试和演示时的极品选择。
首先我们要下载hsqldb,他们的官方网站在http://www.hsqldb.org ,下载了zip发布包找到里边的hsqldb.jar,这就是我们需要的数据库程序。
写一个测试连接的程序。
import java.sql.DriverManager;
import java.sql.Connection;
public class DbUtils {
public static void main(String[] args) throws Exception {
// 加载驱动
Class.forName("org.hsqldb.jdbcDriver" );
// 连接数据库的地址
String url = "jdbc:hsqldb:mem:." ;
String username = "sa" ;
String password = "" ;
Connection conn = null;
try {
// 创建与数据库的连接
conn = DriverManager.getConnection(url, username, password);
System.out.println("成功连接到数据库:" + conn);
} catch (Exception ex) {
System.out.println("连接失败:" + ex);
} finally {
// 关闭连接,释放资源
if (conn != null) {
conn.close();
}
}
}
}
加载驱动程序类名是org.hsqldb.jdbcDriver,它就在hsqldb.jar中。
连接数据库使用的用户名为sa,密码为空,这是默认的数据库管理员。
数据库连接的url地址是jdbc:hsqldb:mem:.。所有jdbc连接url都是以jdbc开头的,第一个冒号后便的部分是使用的驱动别 名,这里的hsqldb就代表我们将使用org.hsqldb.jdbcDriver,第二个冒号后是每个数据库自己特定的访问地址,这里的mem:.表 示使用内存存储模式,连接的数据库名称是“.”。
之前提到hsqldb支持单独运行和嵌入调用两种,在此我们讨论一下这两种调用方式的利弊。
-
嵌入调用
hsqldb是完全使用java编写的,我们可以在自己写的程序里调用hsqldb,就像启动一个普通的线程一样,让hsqldb与我们的程序运行在同一个jvm中。
像 我们上面的例子中使用的就是嵌入调用的形式。DbUtils执行的过程中会启动hsqldb服务器并与之建立连接,在关闭连接释放资源后,jvm关闭的同 时也将hsqldb服务器关闭。DbUtils和hsqldb运行在同一个jvm上,共享这个jvm分配的内存等资源。
-
单独运行
单独启动一个jvm运行hsqldb,客户程序与服务器程序运行在不同的jvm中,双方通过socket交换数据,客户程序的启动和关闭不会直接影响hsqldb。
我们可以使用它自带的org.hsqldb.Server,启动脚本如下。
set classpath=hsqldb-1.8.0.7.jar
java org.hsqldb.Serverorg.hsqldb.Server会自动去读取server.properties中的配置。
server.port=9100
server.database.0=mem:test
server.dbname.0=test这里启动一个监听9100端口的hsqldb服务器,服务器中包含一个数据库,使用mem:test的存储方式,对外的数据库名称是test。
为了连接这个数据库,需要修改连接数据库使用的url。
String url = "jdbc:hsqldb:hsql://localhost:9100/test"
hsql表示我们将使用hsqldb自身的socket方式进行连接。连接的数据库在localhost的9100端口,test是我们需要进行连接的数据库名称。
如果希望关闭hsqldb数据库,可以直接关闭java弹出的console窗口。
hsqldb拥有四种存储数据的方式,之前见过的有mem和hsql,下面来介绍一下它们的用法和区别。
-
mem,内存(memory)存储方式。
hsqldb启动的时候会在内存中建立对应的表结构,运行期间对数据做出的所有修改都保存到内存中,最后关闭hsqldb的同时,内存中的所有数据也会全部丢失。
示例代码02-03/Mem.java中,首先创建表结构,并向数据库中写入两条语句:
String[] sqls = {
"create table test(id bigint,name varchar(200))" ,
"insert into test(id,name) values(1,'lingirl')" ,
"insert into test(id,name) values(2,'叮咚')"
};然后执行查询,可以看到两条数据已经成功保存进数据库了。
1 lingirl
2 叮咚mem方式的缺点是每次启动hsqldb都要先创建表结构,插入初始数据,关闭hsqldb的同时数据也会全部丢失。
mem方式的优点是所有操作都在内存中进行,不会生成额外的数据文件,可以保证每次创建的数据库都是绝对干净的,这点对测试来讲很有用。
-
file,文件存储方式。
hsqldb使用文件保存数据库配置,表结构和更新的数据。
hsqldb运行过程中会生成四个文件,它们的文件名都是与连接url地址对应的,示例02-03/File.java中配置的url为"jdbc:hsqldb:file:db/file",对应的将是db目录下所有以file开头的文件。
-
file.properties存放数据库配置,包括数据库版本,缓存,表结构设置等等。
-
file.lck用来标记当前数据库是否已经被某一个hsqldb访问了,同一时间只有一个hsqldb能操作数据库文件,这样才能保证不会出现数据冲突。
这个文件在hsqldb启动时自动生成,正常关闭时会自动删除,但非法关闭会无法删除这个文件,如果因为这个文件出现数据库服务启动的情况,就需要手工删除。
-
file.script和file.log
hsqldb使用这两个文件保存数据表结构和数据,因为用到了缓存,更新的数据不会直接写入文件,而是在内存中积累一定量后,才会批量写入file.log这个日志文件。
file.script用来保存最终数据,hsqldb正常关闭的时候会把内存和日志文件(file.log)中的数据写入file.script,并删除日志(file.log)文件。
如果出现非正常关闭的情况,内存中缓存的数据会丢失,file.log也无法删除,不过不用担心,下次启动的时候hsqldb会先检测是否有未删除的file.log,将其中的数据写入file.script,再读取file.script中的数据,进行初始化操作。
File.java中的sql语句有了变化,因为使用文件保存了表结构,每次操作之前还是先删除它们比较保险。
String[] sqls = {
"drop table test if exists" ,
"create table test(id bigint,name varchar(200))" ,
"insert into test(id,name) values(1,'lingirl')" ,
"insert into test(id,name) values(2,'叮咚')"
};多了这条清空语句,我们可以得到与mem相同的查询结果,如果不删除表 ,把插入语句修改成不冲突的形式,我们就可以看到每次查询结果不断增多。因为即使hsqldb关闭了,数据也会保存在文件里。
拜 缓存所赐,像我们这样放任hsqldb随jvm关闭,一定会丢失数据,为了这一点,我们在url上加入了特殊标记String url = "jdbc:hsqldb:file:db/file;shutdown=true",保证每次conn.close()都会关闭数据,将数据写入 file.script,相对的也使缓存完全丧失了效果。
当然,也可以向数据库发送shutdown语句,正常关闭数据库。
-
-
res,资源存储方式。
它 是mem与file两者的结合,我们把res.properties和res.script放到classpath下的db/目录下,对应url = "jdbc:hsqldb:res:/db/res"。数据库启动的时候会去这两个文件里读取数据进行初始化,但不会生成res.lck和 res.log,以后进行的所有操作就都在内存里了,关闭数据库也不会写入res.script。
res就像是使用file提供初始数据的mem内存访问方式,它在系统演示的时候十分方便,设置一次初始数据就可以演示多次,而且不会影响初始数据的结果。用于测试就不太适合了,res.script明显没有sql语句便于维护,还是老老实实用sql导入更合适。
res唯一的限制是不能进行建表和删表的操作,你可以插入,修改,删除数据,但是不能修改表的结构。
-
hsql,socket访问方式。
使用socket链接,从一个单独运行的hsqldb服务器中获得数据,这个服务器中的hsqldb又可能是这四种存储方式。只要你想,就完全可以做成一条链状结构。
第一种方式,url = "jdbc:hsqldb:file:db/file;shutdown=true",这样每次conn.close()都会执行shutdown命令关闭数据,实际上扼杀了缓存的效果。
另一个方式,在jvm关闭前,向数据库发送shutdown命令,让它正常关闭。
发表评论
-
Java反射获取属性
2016-03-21 19:44 973import java.lang.reflect.Field ... -
JetBrains注册码计算(IntelliJ IDEA 15.0注册码激活)
2016-02-01 00:51 936安装前修改时间为2099年等很多年后的时间点,安装后选择免费 ... -
Memcached客户端简介
2014-05-22 11:56 795Memcached客户端性能评测报告 本次memcache ... -
IntelliJ IDEA 的 20 个代码自动完成的特性
2014-04-29 13:43 859在这篇文章中,我想向您展示 IntelliJ IDEA 中最 ... -
Openfire 性能优化
2013-07-26 00:04 1363Openfire 是一个XMPP协议的IM Server ... -
javamd5实例
2013-05-31 11:07 879import java.io.*; import java ... -
网络爬虫之网页更新的判断策略
2012-12-11 09:41 2093摘要:做搜索引擎的时候,网络爬虫(WebSpider)对 ... -
搭建Nexus
2012-12-05 00:43 6331. 首先下载Nexus 从官网htt ... -
从Maven私服获取依赖
2012-12-05 00:23 1078转自:http://blog.csdn.net/shei ... -
创建你的首个Maven项目
2012-12-03 23:56 928要创建你的首个项目,你需要使用Maven的Archet ... -
MyEclipse10.0(Mac)离线下线安装
2012-11-29 22:49 1090离线安装: http://downloads.myeclips ... -
cocosd-android原来是个山寨货
2012-06-13 09:25 9791、技术团队无优势:Cocos2D-Android版本与iPh ... -
正则表达式中问号等特殊字符的转义
2010-11-05 00:09 1628正则表达式中问号等特殊字符的转义 在.NET Framewor ... -
Spring 中 AOP 特性详解
2010-11-02 16:46 1554动态代理的实现原理 ... -
Spring 框架的设计理念与设计模式分析(2)
2010-10-29 14:33 1125如何创建 BeanFactory 工厂 正如图 ... -
Spring 框架的设计理念与设计模式分析(1)
2010-10-29 14:09 1044Spring 的骨骼架构 ... -
删除ie cookie
2010-10-26 11:33 1349Cookie[] cookies = request.g ... -
Spring with Tomcat 中文编码问题的解决方案
2010-10-26 09:55 1309由于各种原因,Java 应用中有关中文编码的问题总是层出不穷, ... -
MyEclipse 8.5 优化实例
2010-10-21 21:26 1689第一步: 取消自动validationvalidation ... -
cookie共享(单点登录)
2010-10-13 17:59 1135正常的cookie只能在一个应用中共享,即一个cooki ...
相关推荐
通过以上步骤,可以深入了解HSQLDB的内部工作原理,特别是其缓存管理和数据存储机制,从而优化数据库性能,解决潜在问题。在实际应用中,根据需求选择合适的数据表类型,并合理配置缓存,能有效提升HSQLDB的效率。
以下是对HSQldb快速入门的详细讲解: **安装与配置** HSQldb可以从其官方网站(http://www.hsqldb.org/)下载最新稳定版,解压缩后,你会在`doc`目录下找到`User Guide`,这是HSQldb的官方用户手册,包含了详细的...
HSQldb是一个轻量级的关系型数据库管理系统,特别适合用于系统演示、开发和测试环境。它的特点是快速、灵活且易于使用。HSQldb支持多种运行模式,满足不同场景的需求。 1. **数据库实例创建** 创建HSQldb数据库...
5. **部署问题**:针对实际部署过程中可能遇到的问题提供了解决方案,包括数据库升级、备份策略等。 6. **TEXT表**:特别介绍了HSQLDB中的TEXT表实现机制。 #### 三、运行与使用HSQLDB - **运行工具**:HSQLDB提供...
总的来说,HSQldb 2.25是一款专为JDK 1.5设计的数据库管理系统,它保持了HSQldb的高性能和灵活性,同时也解决了与旧版JDK的兼容性问题,为依赖JDK 1.5的开发者提供了一种可靠的数据库解决方案。
总结来说,HSQldb 2.2.8是一款适合小型应用和开发测试的数据库解决方案,它提供了标准SQL支持、JAVA接口、高效的内存处理及灵活的运行模式。对于需要快速部署、轻量级数据库需求的项目,HSQldb无疑是一个值得考虑的...
总的来说,Java HSQLDB与SqlTool的结合提供了一个简单而强大的数据库解决方案,尤其适合于快速开发和测试。通过深入学习和实践这两个工具,开发者能够提高工作效率,减少对大型数据库系统的依赖,同时也能在需要时...
由于HSQLDB是开源的,开发者可以深入研究其源码,理解数据库的内部工作原理,如查询解析、执行计划生成、事务管理等,这对提升数据库相关的技术能力非常有帮助。 总之,HSQLDB作为一个轻量级、高性能的数据库,广泛...
总的来说,HSQldb是一个功能完备且易于使用的Java数据库解决方案,尤其适合于开发和测试环境。通过阅读提供的中文使用说明,结合Eclipse等开发工具,开发者可以快速上手并充分利用HSQldb的各项功能。无论是在内存中...
### HSQLDB中文帮助文档知识点总结 #### 一、HSQLDB概述 - **定义**:HSQLDB(HyperSQL Database)是一款轻量级、开源的纯Java SQL数据库管理系统。它能够作为嵌入式数据库使用,也可以作为一个独立的服务器运行。 ...
总之,HSQldb作为一款开源的Java数据库,以其轻量级、高性能和灵活性,为开发者提供了便捷的数据库解决方案。无论是初学者还是经验丰富的开发人员,都能从中找到适合自己的应用场景,并通过深入学习源码,提升自身的...
在你提到的"hsqldb的最新1.9.0版本"中,它可能包含了性能优化、新功能的添加以及已知问题的修复。 HSQldb的1.9.0版本,作为其发展中的一个里程碑,可能会包含以下关键特性: 1. **性能提升**:新版本可能对查询...
hsqldb数据库下载,很好用,简易的内存数据库,特别适合初学者。
总之,HSQldb是一个强大的Java数据库解决方案,提供了全面的SQL支持和灵活的部署选项。通过研究提供的资源,我们可以深入了解其工作原理、使用技巧,以及如何在不同场景下优化数据库性能。对于Java开发者来说,掌握...
《HSQldb与Java数据库连接详解》 HSQldb(HyperSQL Database)是一款开源、轻量级、嵌入式的关系型数据库管理系统,广泛...理解这些额外库的作用和用法,将有助于我们更有效地利用HSQldb进行数据库操作和应用开发。
《HSQLDB数据库详解》 HSQLDB,全称为HyperSQL Database,是一款高效、轻量级的纯Java编写的数据库管理系统。它以其独特的特性和广泛的应用场景,深受开发者喜爱,尤其在测试、原型设计和小型应用程序中表现出色。...