HSQLDB相关信息及用法汇总

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

进程In-Process(Standalone)模式

数据库引擎作为应用程序的一部分在同一个JVM中运行

从应用程序启动数据库。因为所有数据被写入到文件中,所以即使应用程序退出后,数据也不会被销毁。
无需另外启动HSQLDB Server
跟Memory-Only模式一样,In-Process不需要另外启动,通过DriverManager.getConnection(jdbcUriName, "sa", "");方式既可启动
数据库文件的路径格式在Linux主机和Windows主机上都被指定采用前斜线(”/”)
jdbc:hsqldb:file:/C:/mydb/myDbName jdbc:hsqldb:file:/opt/db/myDbName
jdbc:hsqldb:file:myDbName

服务器模式 该模式下HSQLDB跟其他数据库服务器一样,以服务器的形式被启动。 通过java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 myDbName之类的命令启动HSQLDB守护进程。 jdbc:hsqldb:hsql://localhost:9001/myDbName
Web服务器模式 该模式HSQLDB以WEB服务器的形式启动,并通过HTTP协议接受客户端命令。从1.7.2开始,WEB服务器模式的HSQLDB开始支持事务。 java -cp ../lib/hsqldb.jar org.hsqldb.WebServer -database.0 mydb -dbname.0 myDbName -

http://blog.csdn.net/youlianying/article/details/4217292

HSQLDB可以采用几种不同的方式运行。不过可以大致分为Serer模式和In-Process(进程内模式,也称之为Standalone(独立)模式)。对于每种模式,Jar中都有相应的子程序来运行HSQLDB。

每个HSQLDB数据库包含了2到5个命名相同但扩展名不同的文件,这些文件位于同一个目录下。例如,名位“test”的数据库包含了以下几个文件: test.properties test.script test.log test.data test.backup

properties文件描述了数据库的基本配置。
script文件记录了表和其它数据库对象的定义,此外还有non-cached(无缓冲)表的数据。
log文件是用来记录数据库的变动,它在HSQLDB正常关闭的时候会被移除掉。否则(在非正常退出的时候),它将用来在下次启动HSQLDB时重复“test.log”中记录的更新操作.
data文件包含了cached(缓冲)表的数据。
backup文件是将data文件压缩备份,它包含了data文件上次的最终状态数据。所有这些文件都是必不可少的,千万不可擅自删除。 但如果你的数据库没有缓冲表(cached table),test.data和test.backup文件是不会存在。此外,HSQLDB数据库可以链接到磁盘上任何地方任何格式的文本文件,比如CSV 列表。
lck文件也可以用来记录数据库是否被打开,它在HSQLDB正常退出的时候会被移除。有些情况下,HSQLDB会生成test.data.old ”文件,但随后会被删除掉。
http://blog.itpub.net/47598/viewspace-22397/

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 testdb -dbname.0 testdbname
[-database.0 ]、 [dbname.0]为什么在后面加[0]。_... ...我们不是在前面说服务模式运行的时候可以指定10个数据库吗,如有多个数据库,则继续写命令行参数-database.1 aa -dbname.1 aa -database.2 bb-dbname.2 bb ... ...
http://cxh61207.iteye.com/blog/904444

in-process(standalone)模式:

这种模式的特点有2个。
第一个特点,顾名思义,standalone。也就是这个数据库是可以不依赖其它任何东西,独立存在,包括数据库引擎。和in-memory模式相比,这种模式的数据是可以持久化的,存在形式就是几个文件。和server方式比,要使用这种模式下的数据库不需要启动任何的server或者监听。
第二个特点,同样可以顾名思义,in-process。这种模式下,数据库引擎和应用程序跑在一个jvm中。对大部分应用,这种模式可以加快速度,因为数据不再需要在网络中传输。但是这种方法也有个缺点,就是process之外的程序,比如database manager,无法看到数据库中的数据。

hsqldb官方推荐:开发的时候用server模式,部署到实际生产环境的时候才用standalone模式。
缺省时,数据也是保存在memory中的,如果想要持久化数据,需要在关闭vm之前执行hsqldb的命令 SHUTDOWN。 
http://pupi.iteye.com/blog/45272
http://blog.csdn.net/luxideyao/article/details/19834959
http://maimode.iteye.com/blog/1415644
http://www.cnblogs.com/kenkofox/archive/2010/12/01/1893782.html

内存模式:

package db.hsqldb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class HsqldbDemo {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        // 加载HSQLDB的JDBC驱动
        Class.forName("org.hsqldb.jdbcDriver");
        // 在内存中建立数据库memdb,用户名为sa,密码为空
        Connection conn = DriverManager.getConnection("jdbc:hsqldb:mem:memdb", "username", "password");
        Statement stat = conn.createStatement();
        // 新建数据表
        stat.executeUpdate("create table person(NAME VARCHAR(20), AGE INTEGER,estate DECIMAL(15,6))");
        System.out.println("create TABLE:person OK");
        // 插入数据
        stat.executeUpdate("INSERT INTO person VALUES(‘TPP‘,22,0.3)");
        stat.executeUpdate("INSERT INTO person VALUES(‘WTO‘,‘25‘,0.5)");
        System.out.println("insert data into TABLE:person OK!");
        conn.close();
        // stat.execute("SHUTDOWN");
        conn = DriverManager.getConnection("jdbc:hsqldb:mem:memdb", "username", "password");
        // 查询数据
        PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM person");
        ResultSet rs = pstmt.executeQuery();
        ResultSetMetaData rsmd = rs.getMetaData();
        while (rs.next()) {
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                System.out.print(rsmd.getColumnLabel(i) + ":" + rs.getString(i) + "   ");
            }
            System.out.println("");
        }
    }
}

Output:

create TABLE:person OK
insert data into TABLE:person OK!
NAME:TPP   AGE:22   ESTATE:0.300000
NAME:WTO   AGE:25   ESTATE:0.500000   

Server模式:

目录结构:
│  runServer.bat

├─data
└─lib
        hsqldb.jar

runServer.bat:

cd data
@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -port 9001 -database.0 file:../data/mydb -dbname.0 mydb
package db.hsqldb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class HsqlDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("org.hsqldb.jdbcDriver");
        Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/mydb", "sa", "");
        System.out.println("Connected db success!");
        String sql = "CREATE TABLE TBL_USERS(ID INTEGER, NAME VARCHAR(20), BIRTHDAY DATE);";
        Statement st = conn.createStatement();
        st.execute(sql);
        sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES (‘1‘, ‘ADMIN‘, SYSDATE);";
        st.executeUpdate(sql);
        PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM TBL_USERS");
        ResultSet rs = pstmt.executeQuery();
        ResultSetMetaData rsmd = rs.getMetaData();
        while (rs.next()) {
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                System.out.print(rsmd.getColumnLabel(i) + ":" + rs.getString(i) + "   ");
            }
            System.out.println("");
        }
    }
}
时间: 2025-01-15 19:48:42

HSQLDB相关信息及用法汇总的相关文章

命令行苹果 IOS MAC IPAD 所有app 的相关信息

最近因为工作需要,需要查找所有苹果IOS 上面应用的相关信息,包括APP 的名称和Identifier,如果一个应用一个应用的安装到手机上面再接通到电脑上面查找就太过费公费了,而且相当费时间和占用公司的网速了.于是自己写了一个查找这些信息的脚本程序. 安装方式是  gem install fetchapp 使用格式如下 fetchapp -t  [iphone ipad mac]  -a 没有写文档,因为没有写太多的功能,这里是一个例子 fetchapp -t iphone start requ

C#中DllImport用法汇总

(转) 最近使用DllImport,从网上google后发现,大部分内容都是相同,又从MSDN中搜集下,现将内容汇总,与大家分享. 大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能. DllImport是System.Runtime.InteropServices命名空间下的

【Android】Android背景选择器selector用法汇总

一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片 <?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <item android:drawable="@draw

java身份证合法性校验并获取并根据身份证号提取身份证相关信息

/** * 身份证前6位[ABCDEF]为行政区划数字代码(简称数字码)说明(参考<GB/T 2260-2007 中华人民共和国行政区划代码>): * 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区). * 市(地区,自治州,盟).县(自治县.县级市.旗.自治旗.市辖区.林区.特区). 数字码码位结构从左至右的含义是: 第一层为AB两位代码表示省.自治区.直辖市.特别行政区: 第二层为CD两位代码表示市.地区.自治州.盟.直辖市所辖市

国内外php主流开源cms、商城、点评、SNS、DIGG、RSS、分类信息、Wiki汇总

网上商城源代码 源码之家- www.mycodes.net 酷网动力 www.aspcool.com 源码联盟 www.aspsun.com 源码天下 www.pccode.net http://blog.chinaunix.net/space.php?uid=20787846&do=blog&id=1842324      2009年快完了,今年国内PHP开源CMS内容管理系统从程序框架,模版加载到程序功能上都有很大的进步,大部分都采用了自定义模块,自定义模型的方式,同时提供各个CMS都

如何优雅的备份账号相关信息

前言: 最近遇到实例迁移的问题,数据迁完后还需要将数据库用户及权限迁移过去.进行逻辑备份时,我一般习惯将MySQL系统库排除掉,这样备份里面就不包含数据库用户相关信息了.这时候如果想迁移用户相关信息 可以采用以下三种方案,类似的 我们也可以采用以下三种方案来备份数据库账号相关信息.(本文方案针对MySQL5.7版本,其他版本稍有不同) 1.mysqldump逻辑导出用户相关信息 我们知道,数据库用户密码及权限相关信息保存在系统库mysql 里面.采用mysqldump可以将相关表数据导出来 如果

跳跃表,字典树(单词查找树,Trie树),后缀树,KMP算法,AC 自动机相关算法原理详细汇总

第一部分:跳跃表 本文将总结一种数据结构:跳跃表.前半部分跳跃表性质和操作的介绍直接摘自<让算法的效率跳起来--浅谈"跳跃表"的相关操作及其应用>上海市华东师范大学第二附属中学 魏冉.之后将附上跳跃表的源代码,以及本人对其的了解.难免有错误之处,希望指正,共同进步.谢谢. 跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找.插入.删除等操作时的期望时间复杂度均为O(logn),有着近乎替代平衡树的本领.而且最重要的一点,就是它的编程复杂度较同类

nagios数据库 主机相关信息查询

mysql> select a.host_object_id,a.display_name,a.address,b.hostgroup_id,b.alias from nagios_hosts a,nagios_hostgroups b,nagios_hostgroup_members c where c.host_object_id=a.host_object_id and c.hostgroup_id=b.hostgroup_id order by b.hostgroup_id;+-----

在linux中查询硬件相关信息

1.查询cpu的相关 a.查询CPU的统计信息 使用命令:lscpu 得到的结果如下: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 12 On-line CPU(s) list: 0-11 Thread(s) per core: 1 Core(s) per socket: 6 Socket(s): 2 NUMA node(s): 2 Vendor ID: Genuine