hsqldb使用

1 hsqldb介绍

  HyperSQL DataBase 是一个现代的关系数据库管理软件,比较彻底遵从SQL:2008标准和JDBC4规范。支持SQL:2008标准所以的核心特性和很多的可选特性。

HSQLDB-2.3版本,依照了SQL:2011标准进行了重写。 遵从标准是HSQLDB最独特的特点。

还提供了其他特色功能:

  HyperSQL能够在用户 应用进程中、一个应用服务器中、或作为一个独立的服务器进程提供数据库访问。

         能够完全地在内存中运行(使用极快的内存结构,而不是磁盘)

         能够灵活地使用磁盘持久提供可靠的崩溃恢复

         是仅有的一个具备高性能专用大对象存储系统(适用于GB级的大对象)的开源关系型数据库管理系统

       还是仅有的一个关系型数据库,支持创建和访问逗号分割的大文件作为SQL表

         支持3个运行时可切换事务控制模型,包括完全多线程的多版本并发控制,适用于高性能的事务处理应用

       还适用于商业智能、ETL、其他处理大数据集的应用

         拥有广泛的企业部署选项,如XA事务、连接池数据源、远程认证

  

适用于数据库应用的开发、测试、部署。

新的SQL语法兼容模型,已添加到HyperSQL中。这些模型允许与一些其他使用非标准SQL语法的数据库系统高度兼容。

2 hsqldb.jar包中的组件

  RDBMS Engine 数据库管理系统引擎

  JDBC Driver jdbc驱动

  Database Manager GUI 数据访问工具

3 HyperSQL中的Database

在HyperSQL中,每个database被称为catalog。

有3中类型的catalog(取决于database中的数据是如何存储的)

  mem, 数据完全存储在内存中,在JVM进程外没有任何的持久。  用于数据测试、或作为应用的复杂的缓存

  file,    数据存储在文件系统

  res,   存储在一个Java资源中,如一个jar文件中(总是只读的)

 4 在进程内访问数据库

进程内访问比较快,因为数据没有转换,也不用在网络上发送。

缺点是,从应用的外部默认是不可能连接到数据库的。因此,在应用运行时,你也就无法使用外部工具(如Database Manager GUI)来查看数据库的内容。

通常格式:

  Connection conn = DriverManager.getConnection("jdbc:hsqldb:mem:mymendb", "SA", "");

  Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:test/testdb", "SA", ""); //相对目录,相对于启动JVM的shell命令的执行目录

  Connection conn = DriverManager.getConnection("jdbc:hsqldb:res:org.my.path.resdb", "SA", "");

对数据库做第一次进程内连接时,某些常规的数据结构会被初始化、一些帮助者线程将被创建。 在此之后,连接创建和对这些连接JDBC方法调用的执行,就好像是做这个调用的java应用的一部分一样。

在SQL命令‘shutdown’执行后,数据库的全局结构和帮助者线程将被销毁。

5 服务运行模式 Server Modes

服务运行模式,提供了最大限度的可访问性。

在JVM中运行的数据库引擎,打开一个、或多个进程内catalogs。

它监听来自在同一个computer或网络上其他computer应用程序的连接,并转换这些连接为到数据库的进程内连接。

一些不同的应用程序(客户端)都能够连接到数据库服务,检索、更新信息,使用HyperSQL JDBC驱动。

在大多数server modes中,数据库服务能够服务不受限个数据库(在数据库服务启动时指定,可选地,当接收到一个连接请求时)

在开发过程中,服务模式是运行数据库的首选模型。在应用运行时,允许你从一个独立的数据库访问工具查询数据库。

基于客户端与数据库服务通讯使用的协议,有3个服务模式:

  HSQL Server

    是运行一个数据库服务的首选(最佳)方法,也是最快的一个。该模式使用一个私有的通讯协议。

    运行命令:

      hsqldb-2.3.2\data>java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:mydb/mydb --dname.0 my

      启动一个默认的数据库(文件名:mydb/mydb, 公共名:my)

  

  HSQL HTTP Server

    该模式把数据库服务限制为HTTP协议。使用该访问方法的唯一原因是,客户端、服务端防火墙的限制。在没有该现在的场景中,不应该使用该模式。

    HyperSQL HTTP Server 是一个特定的web服务器,运行JDBC客户端通过HTTP连接。该服务器同样能够作为一个静态页面的小型通用的Web服务器。

  HSQL HTTP Servlet

    使用HTTP协议。当一个独立的servlet引擎(Tomcat, Resin)、或应用服务器,要提供对数据库的访问时使用。该模式从servlet引擎独立启动。

    在hsqldb.jar中的Servlet类应该被安装到服务器中,以提供连接。使用一个应用服务器属性指定数据库文件的路径

    该模式能够服务多个数据库(同时跑多个数据库)

HTTP Server 和 HTTP Servlet 模式,在客户端使用JDBC驱动都能够访问。没有给数据库提供一个Web前端。

6 连接到一个Database服务器

连接到 一个本地的 hsql server :

  Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/my", "SA", "");

连接到 一个本地的 http server :

  Connection conn = DriverManager.getConnection("jdbc:hsqldb:http://localhost/my", "SA", "");

7 测试例子

  

1)创建一个外部使用名为‘my‘的数据库

2)使用hsqldb.jar管理数据库

3)使用java查询

    public static void main(String[] args) throws SQLException {

        try {
            Class.forName("org.hsqldb.jdbc.JDBCDriver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/my", "sa", "");

        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select id, firstname, lastname from customer");

        while (rs.next()) {
            System.out.println("id: " + rs.getInt("id"));
            System.out.println("firstname: " + rs.getString("firstname"));
            System.out.println("lastname: " + rs.getString("lastname"));
        }
    }
    /*
    id: 1
    firstname: Asn
    lastname: Judy
     */
时间: 2024-09-29 03:21:29

hsqldb使用的相关文章

HSQLDB相关信息及用法汇总

运行模式 说明 启动命令 JDBC例 内存(Memory-Only)模式 所有数据都在内存里操作.应用程序退出后则数据被销毁.无需另外启动HSQLDB Server 启动方式1:通过程序中首次调用Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:myDbName", "sa", "");时 启动方式2:你也可以在server.properties中指定相同的URL来运行一个Me

内存数据库中列转行的应用,h2中列转行,hsqldb中列转行

其实列转行是比较简单的用sum和decode函数就可以了,但是我遇到的项目,不知道数据谁设计的居然字段里面还设计成long类型,此long类型与java中的不同,oracle中的long是指可变长二进制数据,最长2G,哎没办法只好转换了. 以下是hsqldb的转换,用到了转换函数convert,可以将long类型的转换为double类型,其中d.value是long类型,status是int类型,所以value需要转换 SELECT P.NAME,P.ID, SUM(DECODE(D.K_NAM

HSQLDB源码学习——数据库安装启动及JDBC连接

HSQLDB 是一个轻量级的纯Java开发的开放源代码的关系数据库系统.因为HSQLDB的轻量(占用空间小),使用简单,支持内存运行方式等特点,HSQLDB被广泛用于开发环境和某些中小型系统中. 在http://sourceforge.net/projects/hsqldb/files/下载了HSQLDB 1.8.0版本.把下载的zip文件解压缩至任意目录例如c:\hsqldb1.8便完成安装. hsqldb有四种运行模式: 一.内存(Memory-Only)模式:所有数据都在内存里操作.应用程

数据库版本管理工具dbdeploy(ant+hsqldb篇)

注意:jdk版本必须是1.5或者更高版本 1.下载dbdeploy-dist-3.0M3-distribution.zip文件 2.解压改文件,随便在哪 3.打开命令面板,切换目录到example下 4.确定你安装了ant,并且配置好了环境变量. 5.执行ant命令 6.你将看到下面的输出信息 例如,为简单起见,使用一个HSQLDB,包括在分配本地文件的版本.dbdeploy支持其他数据库包含Oracle,MySQL和微软SQL服务器. 删除和创建新目录使例子每次都以一个干净的库开始. 上面表明

Exception in thread "HSQLDB Connection @429be9" java.lang.OutOfMemoryError: Java heap space

Exception in thread "HSQLDB Connection @429be9" java.lang.OutOfMemoryError: Java heap space 在服务器下的data/xxxx也就是数据库路径下,我的在F:\tomcat7\bin\data下删掉关于xxxx的文件及文件夹. Exception in thread "HSQLDB Connection @429be9" java.lang.OutOfMemoryError: Ja

HsqlDB Demo

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; import org.hsqldb.Server; import org.hsqld

解决Hsqldb指针只能单向移动,不能回滚问题(.first())

Class.forName("org.hsqldb.jdbcDriver").newInstance(); Connection con = java.sql.DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/hadoop", "sa", ""); Statement stmt1 = con.createStatement(ResultSet.TYPE

开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表( 附加翻译)

开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表 浪天涯博主翻译: referential integrity 参考完整性transactions 事物unicode 统一码interface 命令 界面 接口data size db limit 数据库数据大小限制temporary table 临时表支持materialized view 物化视图(快照)indexes 索引union 联合查询intersect 交集查询except exce

怎么使用hsqldb 和 mybatis 构造单元测试

项目是使用spring + mybatis的项目 下面说下配置怎么写: spring中这样写: <jdbc:embedded-database id="dataSource"> <jdbc:script location="classpath:/test/vmdb.script"/> </jdbc:embedded-database> -- 关键是这句 <bean id="sqlSessionFactory&quo