HSQLDB 试用

原创 2011年01月12日 23:16:00

1.先试用服务器模式。


1)下载hsqldb,解压并进入该目录,创建data目录。
2)创建数据库:java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 file:test1 -dbname.0 testyll
上面语句创建了一个以testyll为访问名字的数据库,不过该数据库在data目录下的存储文件的名字为test1.
3)java -cp ../lib/hsqldb.jar org.hsqldb.DatabaseManager  打开 DatabaseManager。

Type :选择服务器模式( HSQL Database Engine Server

URLJDBC 连接,修改为jdbc:hsqldb:hsql://localhost/testyll

这样就进入testyll数据库。

4)在command栏里输入:

create table Person(
ID INTEGER NOT NULL PRIMARY KEY,
FIRST_NAME VARCHAR NOT NULL,
LAST_NAME VARCHAR NOT NULL,
BIRTH_DATE DATE);

创建一个表。

insert into Person values(1,'yao','lingling','1986-06-30');

插入一条记录。

UPDATE Person SET BIRTH_DATE = '1986-05-24' WHERE LastName = 'lingling' 

查看结果变化。

select * from person;


5)接下去用java程序来访问这个数据库。

先创建一个java文件,将其保存于data目录下。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.hsqldb.jdbcDriver;

public class HsqlDemo {

    public static void main(String[] args) {
        try {
            Class.forName("org.hsqldb.jdbcDriver");
            Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/testyll", "sa", "");

            if (c != null) {
                System.out.println("Connected db success!");
                String sql = "CREATE TABLE TBL_USERS(ID INTEGER, NAME VARCHAR, BIRTHDAY DATE);";
                Statement st = c.createStatement();
                st.execute(sql);
                sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES ('1', 'ADMIN', SYSDATE);";
                st.executeUpdate(sql);
                if (st != null) {
                    st.close();
                }
                c.close();
            }
        } catch(Exception e) {
            System.out.println("ERROR:failed to load HSQLDB JDBC driver.");
            e.printStackTrace();
            return;
        }
    }  
}


6)javac -cp ../lib/hsqldb.jar HsqlDemo.java  编译这个java文件。

7)  java -cp ../lib/hsqldb.jar;.  HsqlDemo  执行这个class文件

8)然后在HSQL database manager 中通过  view   -  refresh tree  查看这个java程序对testyll数据库的改变。

9)创建自己指定的server

首先在 data 目录下创建一个 server.properties 文件,文件内容为(注:在实际文件中,删除后面的注释内容):

server.port=9001               # 指定端口号为 9001

server.database.1=file:mydb  # 将在 data 目录下创建 mydb 数据库

server.dbname.=mydb           # 指定数据库名, jdbc 连接时就是用此名称

server.silent=true

     在data 目录下创建 runServer.bat 文件,文件内容为

@java -classpath ../lib/hsqldb.jar org.hsqldb.Server

     双击运行 runServer.bat 文件,将会在 data 目录下创建 mydb 数据库,并启动数据库。


这样做的话,就需要在java文件里: Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/mydb", "sa", "");



2 以上只是对服务器模式的试用:

下面继续对其他模式进行尝试。

hsqldb总共有三种模式:Server模式, In-Process模式, Memry-Only数据库

1)Server模式提供了最大的可访问性。应用程序(客户端)通过Hsqldb的JDBC驱动连接服务器。在服务器模式中,服务器在运行的时候可以被指定为最多10个数据库。 Server模式又分为三种: Hsqldb Server, Hsqldb Web Server, Hsqldb Servlet。

Hsqldb Server这种模式是首选的也是最快的。它采用HSQLDB专有的通信协议。 Hsqldb Web Server 这种模式只能用在通过HTTP协议访问数据库服务器主机,采用这种模式唯一的原因是客户端或服务器端的防火墙对数据库对网络连接强加了限制。 Hsqldb Servlet    这种模式和Web Server一样都采用HTTP协议,当如Tomcat或Resin等servlet引擎(或应用服务器)提供数据库的访问时,可以使用这种模式。但是Servlet模式不能脱离servlet引擎独立启动。

server模式的创建数据库连接的语句为 Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/testyll", "sa", "");

2)In-Process模式又称Standalone模式。这种模式下,数据库引擎作为应用程序的一部分在同一个JVM中运行。对于一些应用程序来说, 这种模式因为数据不用转换和通过网络的传送而使得速度更快一些。其主要的缺点就是默认的不能从应用程序外连接到数据库。

Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb ", "sa", "");


3)Memory-Only数据库不是持久化的而是全部在随机访问的内存中。因为没有任何信息写在磁盘 上。这种模式通过mem:协议的方式来指定:

  Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:dbName", "sa", "");

也可以在server.properties中指定相同的URL来运行一个Memory-Only(仅处于内存中)服务器实例。


3.回过头来再来看看hsqldb在jpetstore里面的运用。他这个应该是创建的memory-only模式吧。

好了,我找了文档规范了,请参照如下网页:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html

其中12.8专门讲述了spring对embedded-database的支持。


参考资料:

有一篇我觉得写的很好的文章就是:

http://www.cnblogs.com/kenkofox/archive/2010/12/01/1893782.html

Spring by Example JDBC Module:http://www.springbyexample.org/examples/spring-by-example-jdbc-module.html

http://stackoverflow.com/questions/4293787/jdbc-create-table

HsqlDB源码学习——BaseHashMap的实现

通过开源软件学数据结构:HsqlDB中HashMap的实现!

HSQLDb倒数据到Mysql

文章http://wiki.pentaho.com/display/COM/Use+Kettle+to+Migrate+Sample+Data+to+MySQL 给出了解决方案, 就是采用kettl...

HSQLDB介绍

一、简介:  hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议。  相对其他数据库来说,其体积小,才563kb。  仅一个hsqldb.jar文件就包括了数据库引擎...

HyperSQL(HSQLDB)之对Oracle的支持

HSQL作为一个嵌入式DB,在开发过程中作为测试环境是非常方便的,本人也会经常将其作为简单Demo的DB。如了解ibatis的基础语法、Hibernate的HQL测试、Spring的JDBC支持等等,...
  • huigoo
  • huigoo
  • 2012年02月25日 10:18
  • 994

hsqldb快速入门

数据库环境配置和使用 首先从http://www.hsqldb.org/下载一个hsqldb的稳定版本,解压后可以浏览解压目录下的index.html,它描述了各个目录所包含内容,在doc段里有一个...
  • I_nur
  • I_nur
  • 2013年10月25日 14:13
  • 1239

hsqldb-2.2.5运行runManager.bat报错

D:\Java_Essential\hsqldb-2.2.5\hsqldb\bin>cd ..\dataException in thread "main" java.lang.Unsupported...

HsqlDB的安装与使用

HSQLDB 安装与使用   HSQLDB是一个轻量级的纯Java开发的开放源代码的关系数据库系统,其体积小,占用空间小,使用简单,支持内存运行方式等特点。可以在 http://sou...

hsqldb源码分析系列6之事务处理

在session的 public Result executeCompiledStatement(Statement cs, Object[] pvals)方法执行中会处理事务    ...

iText In Action 5.0+英文版教程demo中如何使用Hsqldb

Step 1 : 解压hsqldb-2.3.3.zip, 目录结构template : D:\hsqldb\hsqldb-2.3.3\hsqldb Step 2 : 创建D:\hsqldb\hsql...
  • qwe1626
  • qwe1626
  • 2015年07月28日 09:42
  • 520

hsqldb源码分析系列3 执行引擎分析 插入过程分析

我们看看insert语句的执行过程,   如果cs.isTransactionStatement()是true,则表示启动事务执行,        public Result exec...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HSQLDB 试用
举报原因:
原因补充:

(最多只允许输入30个字)