[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 |... }
(作者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 |... }