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"));
}
rs.close();
stmt.close();
conn.close();
}
/*
id: 1
firstname: Asn
lastname: Judy
*/
hsqldb使用的更多相关文章
- proxool+hsqldb数据库
使用hsqldb数据库,开发环境eclipse,jdk8.0 Dsqldb数据库 1.下载包:hsqldb.jar 2.新建项目,复制到项目WebContent -> WEB -> INF ...
- HsqlDB Demo
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...
- Hsqldb安装与使用
HSQLDB是一个轻量级的纯Java开发的开放源代码的关系数据库系统,其体积小,占用空间小,使用简单,支持内存运行方式等特点.可以在http://sourceforge.net/projects/hs ...
- Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2 部分
HSQLDB 开发者角色 对 HSQLDB 与 Eclipse 工作台的集成感兴趣的开发者可以很容易地被分为两类: 客户机开发者,他们只是用 HSQLDB 来存储数据. 引擎开发者,他们通过添加新的标 ...
- HSQLDB相关信息及用法汇总
运行模式 说明 启动命令 JDBC例 内存(Memory-Only)模式 所有数据都在内存里操作.应用程序退出后则数据被销毁.无需另外启动HSQLDB Server 启动方式1:通过程序中首次调用Co ...
- Kiss MySQL goodbye for development and say hello to HSQLDB
The days of using MySQL, DB2, PostgreSQL etc for development is over.. I don’t know why any program ...
- Exception 04 : java.lang.ClassNotFoundException: Could not load requested class : org.hsqldb.jdbcDriver
异常详细信息 org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org ...
- 解决Hsqldb指针只能单向移动,不能回滚问题(.first())
Class.forName("org.hsqldb.jdbcDriver").newInstance(); Connection con = java.sql.DriverMana ...
- 关于HSQLDB访问已有数据库文件的操作说明
关于HSQLDB数据库的创建,本文不做过多描述,可以在百度上搜索一下,有许多. 对于访问已存在的库文件,网上找了半天,没有整理的很清楚的参考资料,现将自己的操作过程整理如下,以供参考. 1.先下载一个 ...
- 开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表( 附加翻译) h2数据库
开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表 浪天涯博主翻译: referential integrity 参考完整性transactions 事 ...
随机推荐
- OpenLayers使用弹出窗口
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- linux小介绍
常用命令
- JPA 将驼峰列名自动转换为_
数据库中和代码中都没有'cat_age'列名:但是用jpa保存的时候,总是提示此错误:这个问题纠结半天,后来在朋友的指点下,找到问题所在: spring data jpa 使用默认策略是Improv ...
- 高效整洁CSS代码原则(上)
CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则: 1. 使用Reset但并非全局Re ...
- iOS常量(const)、enum以及宏(#define)
http://www.cocoachina.com/ios/20160530/16483.html 本文投稿文章,作者:SuperMario_Nil(简书) 前言:本文主要梳理iOS中如何使用常量.e ...
- 2018-8-10-win10-UWP-修改密码框文字水平
title author date CreateTime categories win10 UWP 修改密码框文字水平 lindexi 2018-08-10 19:17:19 +0800 2018-2 ...
- PHP 从 MongoDb 中查询数据怎么样实现
一.软件环境(版本非必须) php v5.6 扩展:MongoDB nginx v1.11 mongodb v3.2 note: 必须安装MongoDB扩展 二.连接 $client = new Mo ...
- Directx11教程(57) 环境映射
原文:Directx11教程(57) 环境映射 建好skydome后,如果我们想让其中的某个物体,比如那个球体来映射出周围环境的蓝天白云(不包括自己附近的物体),该怎么做呢?此时可以把这个 ...
- day39-Spring 13-Spring的JDBC模板:默认连接池的配置
Spring内置的连接池DriverManagerDataSource的源码. /* * Copyright 2002-2008 the original author or authors. * * ...
- ActiveX控件的消息处理函数
首先切换到类视图 然后鼠标单击选中类(如果你要给ClockCtrl类添加事件,你就选中ClockCtrl类) PS:顺便多说一句,如果不用这种方法,而是手动添加,即使你的代码跟MFC添加的一模一样,那 ...