posts - 2, comments - 27, trackbacks - 0, articles - 60
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

HSQLDB数据库使用介绍

Posted on 2017-04-23 16:41 ZhouFeng 阅读(5000) 评论(0)  编辑  收藏 所属分类: 原创DataBase
用过HSQLDB一段时间,其作为一个小型数据库,很是小巧,jar包也就1M多,麻省虽小,五脏俱全。对于一此网站系统或是小型的应用系统,应该足够满足要求了,主要是绿色环保,不需要进行安装,这点我很喜欢,特别是直接打包到web应用里,可以直接使用,用不着更换运行环境后,重新配置数据库连接。下面就介绍一下hsqldb的一些简单的使用

下载HSQLDB
首先下载hsqldb,其官方网站为hsqldb.org,目前最新版本是2.4.0,最早用过1.9版本的,就觉得甚是喜欢,主页界面上有下载的链接,就一个压缩文件包,不需要区分操作系统。下载后解压即可

目录结构介绍
bin:存放运行的批处理,可以参照着放入自己的批处理用于启动或管理数据库
data:用于存放数据文件的地方,新解压时为空,后面自己用的时候,可能放在里面,也可以放在其他地方
doc:文档,与数据库操作的所有文档都在里面,很详细,有什么问题可以在里面找找
lib:jar文件,HSQLDB核心的jar包
sample:一些配置的模板

数据库启动
HSQLDB运行分为三种模式,分别为内存模式,进程模式,和服务器模式。
在内存模式下,所有的数据都将在内存中完成,如果程序退出,则相应的数据也将同时被销毁。连接JDBC的实例为:jdbc:hsqldb:mem:dbname
在进程模式下,是直接以文件方式进行操作,所有文件均写入文件,关闭数据库后数据可以保留,这种模式下不能接受其他程序访问
服务器模式,常用,又分为三种,即Servet,WebServer,Servlet,详见官方文档,服务器模式单独启动一个JVM用于提供数据库服务,并开放连接端口,其他程序可以通过jdbc或客户端连接,这也是在开发和调试中常用的一种方式,在上线运行后,可采用进程模式
以Server方式启动服务器
修改bin/runServer.bat,另存为myBookServer
cd ..\data
@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:book --dbname.0 bookdb
即在data目录下创建数据文件,文件名为book,启动服务的数据库名为bookdb,如果需要修改监听端口,可以使用--poot 9002,如果不修改端口,可以不用添加这个参数,默认端口为9001,启动后的显示如下
D:\hsqldb-2.4.0\hsqldb\bin>myBookServer.bat

D:\hsqldb-2.4.0\hsqldb\bin>cd ..\data
[Server@4517d9a3]: Startup sequence initiated from main() method
[Server@4517d9a3]: Could not load properties from file
[Server@4517d9a3]: Using cli/default properties only
[Server@4517d9a3]: Initiating startup sequence
[Server@4517d9a3]: Server socket opened successfully in 6 ms.
[Server@4517d9a3]: Database [index=0, id=0, db=file:book, alias=bookdb] opened successfully in 354 ms.
[Server@4517d9a3]: Startup sequence completed in 362 ms.
[Server@4517d9a3]: 2017-04-23 15:22:33.599 HSQLDB server 2.4.0 is online on port 9001
[Server@4517d9a3]: To close normally, connect and execute SHUTDOWN SQL
[Server@4517d9a3]: From command line, use [Ctrl]+[C] to abort abruptly
看到这个提示,说明数据库已经启动好了,并开启了监听端口9001,现在可以通过客户端程序连接了
在bin目录下,有一个runManager.bat和一个runManagerSwing.bat,这两个批处理都可以打开自带的客户端程序,只是界面风格有所不同,runManager要简洁些,下面介绍一下runManagerSwing的使用,双击打开后,需要填写连接信息,当然也可以在命令行里通过参数的方式进行连接,在弹出对话框里输入连接信息

mybook是为当前配置取的名字,URL里添加上bookdb,如果不是9001端口的话,还需要添加端口,如//localhost:9001/bookdb,登录后,就可以进入到管理界面了

在这里操作HSQLDB,比如创建表,修改数据之类的,如果需要修改密码之类的操作,文档里有详解
创建表,插入数据,可以上图界面中运行如下命令
CREATE TABLE TB_BOOKS(BOOKID INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY,BOOKNAME VARCHAR(30),AUTHOR VARCHAR(30));
创建一个book表,分别为bookid,bookname,author

JDBC访问
接下来用JAVA写入数据并测试
package com.zhouf.hsql;

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

public class HsqlTest {

    public static void main(String[] args) throws SQLException {
        //initData();
        Connection conn = getConnection();
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select * from tb_books");
        while(rs.next()){
            System.out.println(rs.getString("bookname") + "=>" + rs.getString("author"));
        }
        rs.close();
        stmt.close();
        conn.close();

    }
    
    public static Connection getConnection(){
        Connection conn = null;
        try {
            Class.forName("org.hsqldb.jdbcDriver");
            conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/bookdb", "SA", "");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    
    public static void initData() throws SQLException{
        
        Connection conn = getConnection();
        Statement stmt = conn.createStatement();
        for (int i = 10; i < 30; i++) {
            String sql = "insert into tb_books(bookname,author) values('BookName"+i+"','Author"+i+"')";
            System.out.println(sql);
            stmt.addBatch(sql);
        }
        
        stmt.executeBatch();
        stmt.close();
        conn.close();
    }

}
先调用initData()初始化数据,就可以在管理界面中看到数据了,再运行java可以读取数据,JDBC连接没有问题,记得一定要在工程里引用lib/hsqldb.jar库
此时在data目录下有很多book开头的文件,只是后缀有所不同,有临时文件,日志文件,属性文件以及脚本文件等,如果运行了shutdown命令,则其他文件会自动清理,仅保留properties和script文件,如果要带走数据库,把这两个文件带走就好了。
如果不希望每次打开管理界面都弹出对话框要求输入内容,可以在命令行里添加参数,拷贝一份bin/runManagerSwing.bat并修改为如下内容
cd ..\data
@java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing --url jdbc:hsqldb:hsql://localhost/bookdb --user SA
另存为myBookManager.bat,下次直接运行这个批处理就可能直接连接到数据库服务器,不用再弹出连接对话框了,前提是服务器正在运行中,如果运行了shutdown关闭了服务器,则需要重新启动服务器进行连接。
至此,基本的hsqldb的使用就完成了,文档里还有其它更多的配置和连接方式,详细情况请参阅doc目录下的文档。
如果需要把hsqldb嵌入到webapp中运行,不用单独启动服务器,请关注后续文档,稍后整理好再发布。自己码了一下午才整理好这一篇,看来得提高效率了,如果这篇文档能对大家所有帮助,那就太好了。

只有注册用户登录后才能发表评论。


网站导航: