HSQLDB数据库使用介绍

用过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中运行,不用单独启动服务器,请关注后续文档,稍后整理好再发布。自己码了一下午才整理好这一篇,看来得提高效率了,如果这篇文档能对大家所有帮助,那就太好了。

HSQLDB数据库使用介绍相关推荐

  1. HSQLDB数据库使用详解(入门)及快速使用

    hsql数据库使用详解(入门)及快速使用 一.简介: hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,不凡考虑一下使用它,相对其 他数据库 ...

  2. Tempdb数据库详细介绍

    Tempdb数据库详细介绍 一.Tempdb简介 tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象.可以简单理解tempdb是SQLServer的 ...

  3. 数据库的介绍、分类、作用和特点

    1. 数据库的介绍 数据库就是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的数据进行增加.修改.删除.查询等操作. [在数据库中输错,按住"ctrl+c"重 ...

  4. mysql数据库引擎介绍

    mysql数据库引擎介绍 你能用的数据库引擎取决于mysql在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HE ...

  5. java中删除sqlite数据库语句_sqlite数据库的介绍与java操作sqlite的实例讲解

    sqlite数据库的介绍与java操作sqlite的实例讲解 发布时间:2020-10-03 05:40:34 来源:脚本之家 阅读:92 作者:Lee_Tech sqlite是啥? 1.一种轻型数据 ...

  6. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软 ...

  7. MySQL数据库引擎介绍、区别、创建和性能测试的深入分析

    深入理解MySQL的数据库引擎的类型 作者: 字体:[增加 减小] 类型:转载 本篇文章是对MySQL的数据库引擎的类型进行了详细的分析介绍,需要的朋友参考下   你能用的数据库引擎取决于mysql在 ...

  8. 1.MySQL数据库的介绍

    1.MySQL数据库的介绍 什么是数据库 数据库(Database)就是按照数据结构来组织,存储和管理数据的仓库 专业的数据库是专门对数据进行创建,访问,管理,搜索等操作的软件,比起我们自己用文件读写 ...

  9. oracle数据库索引介绍,SQL Server和Oracle数据库索引介绍

    SQL Server和Oracle数据库索引介绍 SQL Server 和 Oracle 数据库索引介绍1 SQL Server 中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行 ...

  10. 【Unity 3D游戏开发】在Unity使用NoSQL数据库方法介绍

    随着游戏体积和功能的不断叠加,游戏中的数据也变得越来越庞杂,这其中既包括玩家产生的游戏存档等数据,例如关卡数.金币等,也包括游戏配置数据,例如每一关的配置情况.尽管Unity提供了PlayerPref ...

最新文章

  1. PCB走线拐弯处锯齿显示与平滑显示
  2. react配合python_部署React前端和Django后端的3种方法
  3. c++ map 获取key列表_一日一技:举例说明python中的map()方法
  4. mysql 并发_mysql 的读写锁与并发控制
  5. c语言文件读入到链表函数fscanf,【求解答】c关于把文件数据放进链表,并将链表遍历...
  6. 第十一章 Mock.js 数据生成器
  7. MDIO总线相关_2
  8. 三阶魔方层先法 复原公式
  9. Bulma CSS - 简介
  10. 硬核科普:一片晶圆可以生产多少芯片?
  11. 服务器共享文件夹用户名和密码怎么设置,如何在共享文件夹设登录帐号和密码 - 卡饭网...
  12. 希捷硬盘无法安全弹出如何解决?
  13. IT十年人生过客-十二-痛并快乐着
  14. 北京计算机信息学院,北京信息科技大学计算机学院
  15. MySQL 报错1449:The user specified as a definer (’mysql.infoschema‘@’localhost‘) does not exist
  16. 如何高效管理自己的电脑?文件再多也不乱!
  17. memset和memset_s
  18. bilibili 视频网址
  19. java 导出复杂格式的 Excel 留着自己备用
  20. ASO优化|标题、描述、关键词的最优策略

热门文章

  1. Textview属性Kotlin.Android
  2. siamfc代码解读_每日一文:目标跟踪(SiamFC)
  3. 更新K3官改里面都FRP到0.20版本的方法
  4. 中国居民消费价格指数(CPI)月度汇总数据集(1990.1.31--2020.2.29)
  5. 本科蓝色学术论文答辩PPT模板
  6. 电子购物网站导航制作
  7. Gilbert Strang的线性代数课程笔记-第一课
  8. 小述银行软开~~(转)
  9. 【ArcGIS教程】ArcGIS软件操作——地图配准
  10. C51单片机密码锁课程设计