`
jetway
  • 浏览: 485816 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Hsqldb

 
阅读更多

一、简介:
hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,不凡考虑一下使用它,相对其他数据库 来说,其体积小,才563kb。仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动,还有其他用户界面操作等内容。在Java开源世界里, hsql是极为受欢迎的(就Java本身来说),JBoss应用程序服务器默认也提供了这个数据库引擎。由于其体积小的原因,又是纯Java设计,又支持 SQL99,SQL2003大部分的标准,所以也是作为商业应用程序展示的一种选择。请到以下地址下载hsql:http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download (目前最新好像是1.8)
二、使用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
执行命令后,将会在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 数据库:顾名思义,主要是内存中使用,不用于保存数据。可以用于在内存中交换数据。
三、具体的链接与操作的话,和一般的JDBC操作一样。而相应的Server模式的话,连接地址主要你运行数据库界面操作工具时,在URL一栏时默认已经设好了,自己实习一下,对比其中参数。

我在实践中遇到的问题是打开数据库管理器怎么也连接不上数据库,总是说
java.sql.sqlException Socket create error 原来数据库创建启动之后 cmd窗口是不能关闭的. 这一点跟SQLite这个文件数据库不同,
如果我没记错的话SQLite文件数据库  只许要一个db文件 ,不需要启动服务.那么HsqlDB需要启动服务,那么如何把这个数据库部署到我们的web应用中呢? 答案是在web.xml中配置一个监听,让Hsqldb的服务随监听启动而启动 随着监听摧毁而关闭.当然监听是随着服务器启动而启动,随着服务器关闭而关闭的.  

首先把Hsqldb.jar包添加WebRoot  下的lib中,在hsqldb的管理下 数据库启动的时候如果检查到没有数据库就自动创建一个,如果存在就直接启动了 ,所以我们不需要添加额外的数据库文件 只需要这个jar包即可,在监听中指定数据库的存储的位置.

web.xml(注意根据自己环境配置路径) 

 <listener>

<listener-class>com.andy.hsql.HSQLDBServletContextListener</listener-class>
</listener>

 

我这里采用的的Server模式,内存模式适合功能测试 数据保存到内存中 服务停止了 数据就没了.内存模式跟server模式连接字符串不同到网上搜一下就知道了 我这里就介绍server模式了。

代码:

 

[java] view plaincopy
  1. package com.andy.hsql;  
  2. import java.sql.Connection;  
  3. import java.sql.DriverManager;  
  4. import java.sql.Statement;  
  5. import javax.servlet.ServletContext;  
  6. import javax.servlet.ServletContextEvent;  
  7. import javax.servlet.ServletContextListener;  
  8. import org.apache.log4j.Logger;  
  9. /** 
  10.  * HSQLDB listener this class maintein the HSQLDB server to startup 
  11.  * @author Andy 
  12.  * 
  13.  */  
  14. public class HSQLDBServletContextListener  implements ServletContextListener{  
  15.     private static  Logger log=Logger.getLogger(HSQLDBServletContextListener.class);  
  16.     /** 
  17.      * 关闭服务 
  18.      */  
  19.     public void contextDestroyed(ServletContextEvent event) {  
  20.          Connection conn=null;  
  21.         try {  
  22.             log.info("开始关闭数据库");  
  23.             Class.forName("org.hsqldb.jdbcDriver");  
  24.              conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/mydb",  
  25.                     "sa""");  
  26.             Statement stmt = conn.createStatement();  
  27.             stmt.executeUpdate("SHUTDOWN;");  
  28.             stmt.close();  
  29.              
  30.         } catch (Exception e) {  
  31.             //  
  32.         } finally {  
  33.             try {  
  34.                 conn.close();  
  35.                 log.info("关闭数据库完成");  
  36.             } catch (Exception e) {  
  37.                 e.printStackTrace();  
  38.                  log.error("关闭失败"+e.getMessage());  
  39.             }  
  40.         }  
  41.           
  42.     }  
  43.     /** 
  44.      * 开始启动HSQLDB服务 
  45.      */  
  46.     public void contextInitialized(ServletContextEvent event) {  
  47.          try {  
  48.     log.info("HSQLDB  startup");      
  49.     ServletContext context   =event.getServletContext();  
  50.    
  51.       
  52.      org.hsqldb.Server server = new org.hsqldb.Server();  
  53.      server.setDatabaseName(0"mydb");  
  54.        
  55.      server.setDatabasePath(0, context.getRealPath("/WEB-INF/db/mydb"));  
  56.      log.info("db:"+context.getRealPath("/WEB-INF/db/mydb"));  
  57.      server.setPort(9001);  
  58.      server.setSilent(true);  
  59.      server.start();  
  60.          log.info("HSQLDB  startup success");     
  61.          }catch(Exception e)  
  62.          {  
  63.                
  64.              e.printStackTrace();  
  65.              log.error("HSQLDB startup  failure :"+e.getMessage());  
  66.                
  67.          }  
  68.     }  
  69. }  

 

 

分享到:
评论

相关推荐

    hsqldb使用(转载)

    HSQldb是一个轻量级的关系型数据库管理系统,特别适合用于系统演示、开发和测试环境。它的特点是快速、灵活且易于使用。HSQldb支持多种运行模式,满足不同场景的需求。 1. **数据库实例创建** 创建HSQldb数据库...

    HSQLDB

    **HSQLDB(HyperSQL Database)详解** HSQLDB,全称HyperSQL数据库管理系统,是一款开源、轻量级、高性能的关系型数据库系统。它支持Java平台,并且完全遵循SQL标准,提供内存和磁盘两种存储方式,使得它适用于多种...

    HSQLDB中文帮助文档

    ### HSQLDB中文帮助文档知识点总结 #### 一、HSQLDB概述 - **定义**:HSQLDB(HyperSQL Database)是一款轻量级、开源的纯Java SQL数据库管理系统。它能够作为嵌入式数据库使用,也可以作为一个独立的服务器运行。 ...

    hsqldb-2.2.8数据库

    **HSQldb 2.2.8 数据库详解** HSQldb(HyperSQL Database)是一款高效、轻量级且开源的Java数据库管理系统,它在IT领域中被广泛应用于开发、测试以及小型应用环境。HSQldb完全用Java编写,因此具有良好的跨平台性,...

    HSQLDB快速连接数据库

    ### HSQLDB快速连接数据库 #### 一、HSQLDB简介与特点 HSQLDB(HyperSQL Database)是一款优秀的轻量级开源纯Java SQL数据库管理系统。它被设计为易于集成到现有的Java应用环境中,尤其适合那些对性能和资源消耗有...

    hsqldb的最新版本

    HSQldb,全称HyperSQL Database,是一款开源的、轻量级的关系型数据库管理系统,尤其适合于嵌入式应用和开发测试环境。HSQldb完全用Java编写,因此具有跨平台性,能在任何支持Java的环境中运行,包括Windows操作系统...

    hsqldb-2.5.0.jar

    hsqldb数据库下载,很好用,简易的内存数据库,特别适合初学者。

    hsqldb-lib.zip

    《HSQldb与Java数据库连接详解》 HSQldb(HyperSQL Database)是一款开源、轻量级、嵌入式的关系型数据库管理系统,广泛应用于Java应用程序中。它支持SQL标准,提供单用户和多用户模式,并且可以运行在内存中或磁盘...

    hsqldb包和使用说明

    HSQldb是一个开源的、轻量级的、嵌入式的Java数据库引擎,常用于开发测试环境和小型应用程序。它的全称是HyperSQL Database,能够支持SQL标准,包括SQL:2011。HSQldb因其小巧、快速和易用的特点,在Java开发中尤其受...

    hsqldb-2.3.3.zip

    《HSQldb 2.3.3:轻量级数据库引擎深度解析》 HSQldb,全称为HyperSQL Database,是一款开源、纯Java语言编写的轻量级关系型数据库管理系统,广泛应用于测试环境、嵌入式系统以及小型应用中。HSQldb 2.3.3是其稳定...

    hsqldb实例源代码

    HSQldb是一个开源的、轻量级的关系型数据库管理系统,主要设计用于嵌入式环境,同时也支持服务器模式。它实现了SQL标准,支持多种数据库功能,包括事务处理、存储过程、触发器和视图等。本实例源代码将帮助我们深入...

    hsqldb相关几个文件

    标题 "hsqldb相关几个文件" 提到的是与HSQldb相关的压缩包资源,HSQldb是一个开源的关系型数据库管理系统,特别适用于Java应用程序。描述中提及的有两个zip文件:hsqldb_1_8_0_10.zip 和 hsqldb-mini.zip,以及一个...

    hsqldb-2.3.2.zip

    hsqldb 2 3 2 zip HyperSQL是用Java编写的一款SQL关系数据库引擎 它的核心完全是多线程的 支持双向锁和MVCC 多版本并发控制 几乎完整支持ANSI 92 SQL 支持常见数据类型 最新版本增加了对BLOB和CLOB数据的支持 最高...

    Hsqldb的缓存分析及调试步骤

    HSQLDB(HyperSQL Database)是一个轻量级、高性能的关系型数据库引擎,常用于Java应用程序和测试环境中。它的缓存机制和数据存储方式对于理解其性能和操作至关重要。以下是对HSQLDB的缓存分析和调试步骤的详细解释...

    开源数据库软件hsqldb

    《开源数据库软件HSQldb深度解析》 HSQldb,全称HyperSQL Database,是一款完全开源、免费的Java实现的关系型数据库管理系统(RDBMS),它支持多种运行环境,包括独立服务器模式、嵌入式模式以及Web应用。HSQldb因...

    <转>HSQLDB 安装与使用

    HSQLDB,全称 HyperSQL Database,是一款轻量级、高性能、开源的Java关系型数据库管理系统。它在Java环境中运行,适用于开发嵌入式数据库应用、测试环境以及作为服务器模式的数据库系统。HSQLDB因其小巧、快速和易用...

    HSQLDB中文文档 第六章 Text表

    ### HSQLDB中文文档第六章 Text表解析 #### 一、概述 HSQLDB (HyperSQL Database) 是一款高性能的开源轻量级关系型数据库管理系统,适用于开发测试环境及小型应用系统。Text表是HSQLDB的一个特色功能,主要用于...

Global site tag (gtag.js) - Google Analytics