HSQLDB 试用

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值