HSQLDB使用简介

[b]HSQLDB[/b]
(作者dingjun1 hsqldb1.8.09)
一、 服务端启动模式
a) Server
这是首选、也是最快的服务端启动模式,下面的命令行表示启动一个文件命名为dbname.*的数据库服务端

Shell>Java –cp ../hsqldb.jar org.hsqldb.Server –database.0 file:dbname –dbname.0 dbalias

备注数据库文件在当前文件夹下,hsqldb.jar在上级目录中,如果数据库文件(db.name.*)在C:\myhsqldb目录下,
命令可以改为:
Shell>Java –cp ../hsqldb.jar org.hsqldb.Server –database.0 file:c:\myhsqldb\dbname –dbname.0 dbalias

如果同时启动多个数据库

Shell>Java –cp ../hsqldb.jar org.hsqldb.Server –database.0 file:dbname –dbname.0 dbalias –database.1 file:dbname1 –dbname.1 dbalias1
如果数据库文件不存在,会自动产生以数据库指定名称的文件(如:dbname.log dbname.properties dbname.lck等)

b) Web Server
当客户端和服务端有防火墙,只能通过HTTP协议访问时,以这个模式启动,不般不使用,在版本1.7.2后支持事务。启动的主类为:org.hsqldb.WebServer

Shell>Java –cp ../hsqldb.jar org.hsqldb.WebServer –database.0 file:dbname –dbname.0 dbalias –database.1 file:dbname1 –dbname.1 dbalias1

c) Servlet
同WebServer启动一样,只能通过HTTP协议方式访问,只能启动一个数据库,启动依赖于Servlet引擎

d) 连接到数据库服务端
Hsqldb.jar包中有JDBC驱动
下面的代码给出了示例:
String url = “jdbc:hsqldb:hsql://localhsot/dbalias”
Try{
Class.forName(“org.hsqldb.jdbcDriver”);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
Connection cn = DriverManager.getConnection(url,username,password);
二、 进程模式(标准模式)
这种模式,数据库引擎是做为应用程序的一部分和应用程序一起处在同一个JVM中,由于这种模式不能通过网络修改和发送数据,对大部分程序是比较快的。数据库在程序外不能在程序外部连接

进程模式在连接URL中指定数据库文件,通过JDBC运行数据库
以下命令为启动一个在e:\opt\db\目录下,数据库文件为testdb.*的数据库
也可以使用相对路径(JVM目录)
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:c:\\opt\\db\\testdb", "sa", "");

三、 内存模式
当不要保存数据到磁盘时,只是用于特定的程序进行服务与客户的信息交换,不进行永久保存时,(在server.properties中指定相同的URL启动内存模式的数据库服务?You can also run a memory-only server instance by specifying the same URL in the server.properties)
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");

四、 数据库引擎其它
a) 数据库产生,在进程模式中,如果提供的文件不存在,当服务器实例运行,会新产生一个空的数据库与实例相连,这时如果是由于一连接地址书写错误,也很难发现,可以通过参数ifexists=true来设定,只连接存在的数据库
b) 关闭数据库实例
通过发送shutdown命令,进程内的数据在连接丢失后会自动关闭
c) HSQLDB支持TEMP类型的表和MEMORY 、CACHED 、 TEXT 持久类型的表


五、 其它
Hsqldb提供的主要的工具类:

*
org.hsqldb.util.DatabaseManager
*
org.hsqldb.util.DatabaseManagerSwing
*
org.hsqldb.util.Transfer
*
org.hsqldb.util.QueryTool
*
org.hsqldb.util.SqlTool


  其中DatabaseManage和Sql Tool,只能用命令行参数来运行。你可以在命令行后面加上参数-?来查看这些工具可用的参数列表。其他工具可以通过DatabaseManager的主界面启动,便于交互式操作。


datatypes:
[list=1]
[*]Name --------------Range--------------Java Type

[*]INTEGER | INT--------------as Java type--------------int | java.lang.Integer

[*]DOUBLE [PRECISION] | FLOAT--------------as Java type--------------double | java.lang.Double

[*]VARCHAR--------------as Integer.MAXVALUE--------------java.lang.String

[*]VARCHAR_IGNORECASE--------------as Integer.MAXVALUE--------------java.lang.String

[*]CHAR | CHARACTER--------------as Integer.MAXVALUE--------------java.lang.String

[*]LONGVARCHAR--------------as Integer.MAXVALUE-------------- java.lang.String

[*]DATE--------------as Java type--------------java.sql.Date

[*]TIME--------------as Java type--------------java.sql.Time

[*]TIMESTAMP | DATETIME-------------- as Java type--------------java.sql.Timestamp

[*]DECIMAL--------------No limit--------------java.math.BigDecimal

[*]NUMERIC--------------No limit--------------java.math.BigDecimal

[*]BOOLEAN | BIT--------------as Java type--------------boolean | java.lang.Boolean

[*]TINYINT--------------as Java type--------------byte | java.lang.Byte

[*]SMALLINT--------------as Java type--------------short | java.lang.Short

[*]BIGINT--------------as Java type--------------long | java.lang.Long

[*]REAL --------------as Java type--------------double | java.lang.Double[2]

[*]BINARY--------------as Integer.MAXVALUE--------------byte[]

[*]VARBINARY--------------as Integer.MAXVALUE--------------byte[]

[*]LONGVARBINARY--------------as Integer.MAXVALUE--------------byte[]

[*]OTHER | OBJECT--------------as Integer.MAXVALUE--------------java.lang.Object

[/list]


create table:

CREATE [TEMP] [CACHED|MEMORY|TEXT] TABLE name
( columnDefinition [, ...] )

columnDefinition:
column DataType [ [NOT] NULL] [PRIMARY KEY]
DataType:
{ INTEGER | DOUBLE | VARCHAR | DATE | TIME |... }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值