【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测试类
package com.test.hsqldb; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class TestHsqldbMem { public static void main(String[] args) throws SQLException, ClassNotFoundException { // 加载HSQL DB的JDBC驱动
Class.forName("org.hsqldb.jdbc.JDBCDriver"); // 自动创建数据库,得到联接对象 connection
String url="jdbc:hsqldb:mem:db";
Connection con=DriverManager.getConnection(url, "sa", ""); // 新建数据表
String ctreateTable="create table test(id integer,name VARCHAR(22) )";
Statement createStatement = con.createStatement();
long f1 = createStatement.executeUpdate(ctreateTable);
System.out.println("创建表:" + f1); // 插入数据
String insertSql = "INSERT INTO test VALUES(1,'小明')";
Statement insertStatement = con.createStatement();
long f2 = insertStatement.executeUpdate(insertSql);
System.out.println("插入数据:" + f2); // 查询数据
String selectSql = "select id,name from test";
PreparedStatement prepareStatement = con.prepareStatement(selectSql);
// 发送SQL 返回一个ResultSet
ResultSet rs=prepareStatement.executeQuery(); // 编历结果集
while(rs.next())//从数据库的取一行数据,是否还有下一行
{
int id=rs.getInt(1); //从1开始
String name=rs.getString(2);
System.out.println("id:"+id+"\t名称:"+name);
} // 关闭连接
con.close(); } }
3、运行测试类,结果如下:
【DataBase】Hsqldb的简单使用的更多相关文章
- DataBase安装及简单配置
下载以及安装 打开mysql官网下载页面:http://dev.mysql.com/downloads/mysql/ 用管理员身份打开cmd命令行工具,cd到解压文件的bin目录 输入mysqld i ...
- Prometheus Monitoring System & Time Series Database
什么是 TSDB (Time Series Database): 我们可以简单的理解为.一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的. 时间序列数据库的特点: 大部分时间都 ...
- 升讯威ADO.NET增强组件(源码):送给喜欢原生ADO.NET的你
目前我们所接触到的许多项目开发,大多数都应用了 ORM 技术来实现与数据库的交互,ORM 虽然有诸多好处,但是在实际工作中,特别是在大型项目开发中,容易发现 ORM 存在一些缺点,在复杂场景下,反而容 ...
- 高灵活度,高适用性,高性能,轻量级的 ORM 实现
ORM(Object-Relational Mapping 对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,目的是提供易于理解的模型化数据的方法. ORM虽然有诸多好处,但是在实 ...
- idea使用心得(1)-快捷键用法
快捷键: Ctrl+F12,可以显示当前文件的结构,Alt+7,可在左侧生成固定框体控件,适合类复杂的情况 Ctrl+Alt+O,优化导入的类和包 Ctrl+X,删除行 删除光标所在的哪一行,对尤其是 ...
- Spring MVC Integration,Spring Security
http://docs.spring.io/spring-security/site/docs/4.2.0.RELEASE/reference/htmlsingle/#authorize-reque ...
- (转)HTML5 本地存储
原文:http://www.cnblogs.com/rainman/archive/2011/06/22/2086069.html HTML5 本地存储 1.sessionStorage 2.loca ...
- hibernate自动生成映射文件
映射文件是O/R Mapping的关键,相当于控制中心.当数据库表较多时,手动配置该映射文件非常耗时.为了快速开发程序,使开发人员的注意力集中到业务逻辑上来,Hibernate官方提供的MiddleG ...
- Model First:创建实体数据模型(ADO.NET 实体数据模型)
Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具.它可以让你从一个数据库自动地生成数据接入层.实体框架免 ...
随机推荐
- 行为型模式(九) 访问者模式(Visitor)
一.动机(Motivate) 在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计.如何在不更 ...
- margin值为负值
引用地址:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812 http://www.cnblogs.com/jsco ...
- Linux 物理机虚拟化
前言 我有一台安装了 RHCA 资源的磁盘,然而每次开机时需要切换启动项为该磁盘.于是我想将它实现物理虚拟化. 工具 Windows 10 RHCA Disk Virtualbox 5.1 Virtu ...
- read_excle
Signature: pd.read_excel( ['io', 'sheet_name=0', 'header=0', 'skiprows=None', 'skip_footer=0', 'inde ...
- npm安装模块没有权限解决办法
直接加上unsafe的参数即可 sudo npm install --unsafe-perm --verbose -g sails
- H3CNE学习6 静态路由
一.相应命令 1.查看路由表 2.直连路由 3.静态路由配置 4.路由器转发数据包 二.静态路由2 1.路由优先级 管理距离即优先级,值越小就越优先 2.路由度量 如果上下都是使用的相同的路由协议那么 ...
- redis堵死致数据清空
情景: zy的链路监控突然都恢复,而且在哪个时间段zabbix中显示回复,也发送了告警,但是实际上告警并没有发出来.这是不可能的情况,应该是redis缓存中的数据都被清空了,没有认为干预,需解决问题 ...
- CODE FESTIVAL 2016 qual A题解
传送门 不知道为什么\(AGC\)系列的题里突然多了这些--那就做吧-- \(A\) 什么玩意儿-- upd:因为没看到最后要加换行居然没有\(1A\)好气哦-- const int N=15; ch ...
- Python中文件读写read,readline,readlines函数的区别?
read 每次会读取整个文件 readline 每次读取一行信息 readlines 读取整个文件返回一个列表,列表每个元素代表一行
- Spring的Core模块
Core模块主要的功能是实现了反向控制IOC(Inversion of Control)与依赖注入DI(Dependency Injection).Bean配置以及加载.Core模块中有Beans.B ...