首页 > 数据库 >【DataBase】Hsqldb的简单使用

【DataBase】Hsqldb的简单使用

时间:2024-04-22 14:11:23浏览次数:29  
标签:JDBC java DataBase 数据库 jar hsqldb 简单 Hsqldb HSQLDB

【DataBase】Hsqldb的简单使用

 

介绍

  HSQLDB是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。具有Server模式,每个程序需要不同的命令来运行。

  HyperSQL数据库(HSQLDB)是一种现代关系数据库系统。版本2.4.1是全新版本2代码的最新版本。从头开始编写,遵循国际ISO SQL:2011标准,它支持完整的经典功能集,以及存储过程和触发器等可选功能。

  HyperSQL版本2.4.1与Java 8或更高版本兼容。还可以使用JDK 6或JDK 5编译的HSQLDB jar版本。这些版本编号为2.3.6,以区分功能差异。

  HyperSQL用于数据库应用程序的开发,测试和部署。

  官网地址:http://hsqldb.org/

HSQLDB Jar

  HSQLDB jar包hsqldb.jar位于ZIP包的/ lib目录中,包含多个组件和程序。

  Hsqldb jar包的组件

  • HyperSQL RDBMS引擎(HSQLDB)

  • HyperSQL JDBC驱动程序

  • 数据库管理器(GUI数据库访问工具,带Swing和AWT版本)

  HyperSQL RDBMS和JDBC驱动程序提供核心功能。DatabaseManagers是通用数据库访问工具,可以与任何具有JDBC驱动程序的数据库引擎一起使用。

  另一个jar,sqltool.jar,包含Sql Tool,命令行数据库访问工具。这是一个通用的命令行数据库访问工具,也可以与其他数据库引擎一起使用。

运行数据库访问工具

  这些工具用于交互式用户访问数据库,包括创建数据库,插入或修改数据或查询数据库。所有工具都以Java程序的正常方式运行。在以下示例中,将执行数据库管理器的Swing版本。本hsqldb.jar所在的目录中 ../lib相对于当前目录。

  java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

  如果hsqldb.jar在当前目录中,该命令将更改为:

  java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

  Hsqldb工具的主要类

  • org.hsqldb.util.DatabaseManager

  • org.hsqldb.util.DatabaseManagerSwing

  当工具启动并运行时,您可以连接到数据库(可能是新数据库)并使用SQL命令来访问和修改数据。

  工具可以使用命令行参数。您可以添加命令行参数--help以获取这些工具的可用参数列表。

  双击HSQLDB jar将启动DatabaseManagerSwing应用程序

目录数据的类型

  • mem:完全存储在RAM中 - 没有任何超出JVM进程生命周期的持久性

  • file:存储在filesystem文件中

  • res:存储在Java资源中,例如Jar,并且始终是只读的

运行模式

  一、内存(Memory-Only)模式:所有的数据都将在内存中完成,如果程序退出,则相应的数据也将同时被销毁。

    连接JDBC的实例为:jdbc:hsqldb:mem:dbname

  二、进行(In-Process)模式:此模式从应用程序启动数据库,由于所有的数据都将写到文件中,所以,即使程序退出,数据也不会被销毁。In-Process 不需要另外启动,可以通过 DriverManager.getConnection("jdbcUriName","username","password"); 方式即可启动数据库。

    连接 JDBC 的实例为:

        jdbc:hsqldb:file:/E:/hsqldb/data/dbname
        jdbc:hsqldb:file:/opt/db/dbname
        jdbc:hsqldb:file:dbname
  三、服务器模式:此模式下 HSQLDB 跟其它数据库服务器一样,需要通过服务器的形式来进行启动

    通过命令:java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:testdb --dbname.0 testdbname

    启动一个守护进程。

    连接 JDBC 的实例为:jdbc:hsqldb:hsql://localhost:port/testdbname

  四、Web服务器模式:此模式以WEB服务器的形式启动,并通过HTTP协议接受客户端命令。从1.7.2版本开始,Web服务器模式的 HSQLDB 开始支持事务处理。

    启动命令:java -cp ../lib/hsqldb.jar org.hsqldb.server.WebServer –database.0 testdb –dbname.0 testdbname

    连接 JDBC 的实例为:jdbc:hsqldb:http://localhost:port/testdbname

 

  当以二三四模式运行时,会在运行目录下产生三个文件

   test.lck ——标识数据库锁状态。

   test.log ——运行数据库产生的log信息,它将记录每一个运行和用户操作环节。  

   test.properties——数据库的配置信息,包括分配的内存大小等,可更具需要修改。

简单使用

  需要java环境

  内存模式使用(自带工具测试)

  1、在官网下载jar包(hsqldb-2.4.1.jar ),双击jar包运行hsqldb数据库访问工具,如下:  

    

  2、默认连接到内存模式的hsqldb数据库(.),可以不修改任何东西,也可以修改url,修改内存模式运行的数据库名,

    url修改为:jdbc:hsqldb:mem:db,此内存模式运行的数据库名(db),数据库会自动创建在内存中

    

  3、点击ok,进入操作界面,如下图:

    

  4、选择测试脚本(command-》test script)

    

  5、运行Execute SQL

       

   内存模式使用(JDBC测试)

  1、新建Maven工程,引入jar包

  2、编辑JDBC,java测试类

复制代码
 1 package com.test.hsqldb;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 import java.sql.Statement;
 9 
10 public class TestHsqldbMem {
11 
12     
13     public static void main(String[] args) throws SQLException, ClassNotFoundException {
14         
15         // 加载HSQL DB的JDBC驱动
16         Class.forName("org.hsqldb.jdbc.JDBCDriver");
17         
18         // 自动创建数据库,得到联接对象  connection
19         String url="jdbc:hsqldb:mem:db";
20         Connection con=DriverManager.getConnection(url, "sa", "");
21         
22         // 新建数据表
23         String ctreateTable="create table test(id integer,name VARCHAR(22) )";
24         Statement createStatement = con.createStatement();
25         long f1 = createStatement.executeUpdate(ctreateTable);
26         System.out.println("创建表:" + f1);
27         
28         // 插入数据
29         String insertSql = "INSERT INTO test VALUES(1,'小明')";
30         Statement insertStatement = con.createStatement();
31         long f2 = insertStatement.executeUpdate(insertSql);
32         System.out.println("插入数据:" + f2);
33         
34         // 查询数据
35         String selectSql = "select id,name from test";
36         PreparedStatement prepareStatement = con.prepareStatement(selectSql);
37         // 发送SQL  返回一个ResultSet
38         ResultSet rs=prepareStatement.executeQuery();
39 
40         // 编历结果集
41         while(rs.next())//从数据库的取一行数据,是否还有下一行
42         {
43             int id=rs.getInt(1);  //从1开始
44             String name=rs.getString(2);
45             System.out.println("id:"+id+"\t名称:"+name);
46         }
47         
48         // 关闭连接
49         con.close();
50         
51     }
52 
53 }
复制代码

  3、运行测试类,结果如下:

    

  

 

标签:JDBC,java,DataBase,数据库,jar,hsqldb,简单,Hsqldb,HSQLDB
From: https://www.cnblogs.com/rxbook/p/18150544

相关文章

  • Serilog简单使用指南
    Serilog是.net平台上的一个记录程序诊断信息的日志框架,主要工作内容是决定将日志内容以何种格式保存到外部存储介质中(可以是控制台、文件、数据库和第三方日志服务)。除此之外还有NLog和Log4Net等类似的日志框架。Serilog的优点是在云服务厂商中有支持Serilog的插件可以直接使用,而......
  • next.js app目录 i18n国际化简单实现
    最近在用next写一个多语言的项目,找了好久没找到简单实现的教程,实践起来感觉都比较复杂,最后终于是在官方文档找到了,结合网上找到的代码demo,终于实现了,在这里简单总结一下。此教程适用于比较简单的项目实现,如果你是刚入门next,并且不想用太复杂的方式去实现一个多语言项目,那么这个教......
  • Spring-Retry框架简单使用
    前言Spring-Retry框架是Spring自带的功能,具备间隔重试、包含异常、排除异常、控制重试频率等特点,是项目开发中很实用的一种框架。SpringCloudConfig请求配置中心服务器时就使用到了此功能,具体可以看ConfigServicePropertySourceLocator。使用添加依赖底层使用AOP实现的,......
  • 简单了解HTML
    HTML <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <title>菜鸟教程</title> <\head> <body>    <h1>我的第一个标题</h1> <p1>我的第一个段落</p1> ​ </body> <\html>  &l......
  • dbt docs block 简单说明
    dbtdocsblock是一个jinja2bblock的扩展,以下是一个简单的说明参考使用定义{%docstable_events%} Thistablecontainsclickstreameventsfromthemarketingwebsite. TheeventsinthistablearerecordedbySnowplowandpipedintothewa......
  • dbt doc 函数内部处理简单说明
    dbt提供了一个方便的doc函数,可以方便的使用类似ref模式进行docsblock定义的引用引用参考处理示例version:2models:-name:eventsdescription:'{{doc("table_events")}}'columns:-name:event_iddescription:......
  • 简单的数学题 题解
    题意:解方程\[a^x\equivx\pmodm\]数据范围:\(a<m\le10^9\)Solution首先\(a^x\equiva^{x\bmod\varphi(m)+\varphi(m)}\pmodm\)我们设\(\text{solve}(\&x,y,m)\)表示解决\[a^{x\bmod\varphi(m)+y}\equivx\pmodm\]原题即\(\text{solve}(\&x,......
  • 解析几何简单计算
    设点设线例题1题目已知椭圆方程\(\dfrac{x^2}{4}+y^2=1\),设直线\(l\),不经过点\(P(0,1)\)且与椭圆相交于\(A,B\)两点,若直线\(PA\)与直线\(PB\)的斜率和为\(-1\),证明:直线\(l\)过定点。题解由直线\(l\)不过点\(P(0,1)\)可设直线\(l\)方程:\(mx+n(y-1)=1\)......
  • 使用Docker部署一个简单的web项目
    使用Docker部署一个简单的web项目开发流程在本地开发一个有静态文件服务的web服务程序web服务监听ip+port为0.0.0.0:3000在服务器上使用Dockerfile构建镜像使用构建出的镜像运行容器配置Nginx将端口代理到web服务的3000端口在本地开发一个有静态文件服......
  • 利用Android Studio简单编译一个可执行文件
     目的:初学ndk,想利用AndroidStudio编一个能直接在Android上运行的可执行程序1、创建NativeC++项目  这样会在代码目录下生成,cpp文件夹和Java文件夹  2、修改cmake文件生成可执行文件3、构建项目生成就会在buildcxx目录下生成文件,通过adb上传到手机运行 ......