??xml version="1.0" encoding="utf-8" standalone="yes"?> HSQLDB是一个轻量的纯Java开发的开放源代码的关pL据库pȝQ其体积,占用I间,使用单,支持内存q行方式{特炏V可以在http://sourceforge.net/projects/hsqldb/files/下蝲最新的HSQLDB版本。我q里下蝲的是HSQLDB 1.8.13版本。下载完之后Q把它解压到M目录下,?/span>E:\hsqldb下,完成安装工作?/span> Hsqldb有四U运行模式: 一?span> 内存Q?/span>Memory-OnlyQ模式:所有的数据都将在内存中完成Q如果程序退出,则相应的数据也将同时被销毁。连?/span>JDBC的实例ؓQ?/span>jdbc:hsqldb:mem:dbname 二?span> q行Q?/span>In-ProcessQ模式:此模式从应用E序启动数据库,׃所有的数据都将写到文g中,所以,即ɽE序退出,数据也不会被销毁?/span>In-Process不需要另外启动,可以通过DriverManager.getConnection(jdbcUriName,”sa”,””)Q方式即可启动数据库。连?/span>JDBC的实例ؓQ?/span> jdbc:hsqldb:file:/E:/hsqldb/data/dbname jdbc:hsqldb:file:/opt/db/dbname jdbc:hsqldb:file:dbname 三?span> 服务器模式:此模式下HSQLDB跟其它数据库服务器一P需要通过服务器的形式来进行启动,可以通过java –cp ../lib/hsqldb.jar org.hsqldb.Server –database.0 testdb –dbname.0 testdbName的命令启动一个守护进E。连?/span>JDBC的实例ؓQ?/span>jdbc:hsqldb:hsql://localhost:<port>/dbname 四?span> Web服务器模式:此模式以WEB服务器的形式启动Qƈ通过HTTP协议接受客户端命令。从1.7.2版本开始,Web服务器模式的HSQLDB开始支持事务处理。可以通过java –cp ../lib/hsqldb.jar org.hsqldb.WebServer –database.0 testdb –dbname.0 testdbname的命令来启动?/span> 重点讨论hsqldb服务器模式的启动Ҏ(gu)和连接和实际javaE序?/span>JDBCq接情况。假?/span>JDK已经安装到机器上Q环境变量等都正设|?/span> 首先?/span>E:\hsqldbTest目录下徏立两个子目录Q?/span>data?/span>lib目录Q?/span>data用来存放数据Q?/span>lib用来理jar包。将解压之后?/span>hsqldb中的lib目录下的hsqldb.jar文g拯?/span>E:\hsqldbTest\lib目录下?/span> 1Q?span> ?/span>hsqldbTest目录下创?/span>runServer.bat文gQ其内容为: cd data @java -classpath ../lib/hsqldb.jar org.hsqldb.Server 2Q?span> 保存runServer.bat文gQƈ双击q行该文Ӟ此时回弹出命令行H口Q如下图Q表C已启动HSQLDB数据库?/span> 此时Q在data目录下生了三个文gQ如Q?/span> test.lck ——标识数据库锁状态?/span> test.log ——q行数据库生的log信息Q它?yu)记录每一个运行和用户操作环节?/span> test.properties——数据库的配置信息Q包括分配的内存大小{,可更具需要修攏V?/span> 注:如果在命令行H口中按?/span>[Ctrl] + [C]l合键,数据库将退出ƈ关闭?/span> 3Q?span> 再创?/span>runManager.bat文gQ用来启动图形界面管理工P其内容ؓQ?/span> cd data @java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager 4Q?span> 保存runManager.bat文gQƈ双击文gQ此时回弹出囑Ş界面Q注意,在进行这一不之前,必须保W二步已执行Q,如下图?/span> RecentQ将会列出最q的数据库配|?/span> Setting Name: 讄名称Q这里不需要填?/span> TypeQ选择服务器模式(HSQL Database Engine ServerQ?/span> DriverQ驱动名Uͼ不需要修?/span> URLQ?/span>JDBCq接Q无需修改 UserQ用户名,Ҏ(gu)需要设|?/span> PasswordQ密码,Ҏ(gu)需要设|?/span> 5Q?span> 点击?/span>OK】按钮,卛_q接?/span>test数据库。如下图所C?/span> 此时Q我们可以在H口中创{操作,例如Q我们创Z?/span>TBL_USERS的表。在菜单栏中选择?/span>COMMAND?/span>->?/span>CREATE TABLE】命令,此时在右下文本框中显C创的命令,包括各式Q支持的cd{。我们创建的TBL_USERS表结构如下图所C: 6Q?span> 点击?/span>Execute】按钮,如果无语法错误,SQL语句正常执行,此时Q选择菜单栏中的?/span>View?/span>->?/span>Refresh Tree】命令,左侧栏中显C创建的TBL_USERS。如下图所C。ƈ且查?/span>test.log文gQ创的过E都全部记录?/span> 7Q?span> 另外q可以用DatabaseManagerSwing工具启动囑Ş界面。创?/span>runManagerSwing.bat文gQ内容ؓQ?/span> cd data @java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing 保存文gQ双击该文gQ将启动Swing囑Ş界面Q如下图所C,具体的操作过E和DatabaseManager工具cMQ不再重复?/span> 以上是启动hsqldb数据库和创徏表的整个q程Q其它的功能可以通过多次联系卛_掌握。按照以上操作方式,hsqldb自动生一?/span>test的数据库。但是有时候我们需要自己指定数据库Q数据库讉K名,数据库访问端口等Q该如何实现呢,很简单。只要在相对根目录下创徏一?/span>server.properties文g卛_?/span> 创徏自己制定的数据库Q?/span> 1. 首先?/span>E:\hsqldbTest目录下创Z?/span>server.properties文gQ文件内容ؓQ注Q在实际文g中,删除后面的注释内容)Q?/span> server.port=9001 #指定端口号ؓ9001 server.database.0=file:data/mydb # 在data目录下创?/span>mydb数据?/span> server.dbname.=mydb #指定数据库名Q?/span>jdbcq接时就是用此名U?/span> server.silent=true 2. ?/span>E:\hsqldbTest目录下创?/span>runServer2.bat文gQ文件内容ؓ @java -classpath lib/hsqldb.jar org.hsqldb.Server 3. 双击q行runServer2.bat文gQ将会在data目录下创?/span>mydb数据库,q启动数据库?/span> 4. 双击q行已创建好?/span>runManagerSwing.bat文gQ打开囑Ş理界面Qƈ讄q接?/span>mydb数据库中Q如下图所C: 5. 配置好选项Q点凅R?/span>OK】按钮,卛_q接?/span>mydb数据库,在窗口中可以按照以前的步骤创Q添加记录等操作?/span> 好了Q以上就是整?/span>hsqldb的安装、启动、创{的全过E,在这里特别说明的是,hsqldb.1.8.1.3是用JDK.1.5以上的版本的~译的,所以,如果你用的是低?/span>jdk1.5的版本时Q可能出现异常情况,不能正常使用。另外,即你安装的jdk版本?/span>1.5以上的,可能q会出现异常Q该如何办呢Q此Ӟ保你的hsqldb是在官方|站下蝲的,需要检查你?/span>java的环境变量,׃你的机器可能安装?/span>oracleQ很有可能出现问题,此时只需?/span>%JAVA_HOME%\bin路径攄?/span>path路径的最开_q样Q就不会出现异常情况了?/span> 接下来,我们通过一个具体的javaE序来连接徏立好?/span>mydb数据库,q且?/span>mydb数据库中创徏一?/span>TBL_USERS的表。ƈ插入一条记录?/span> 1. ?/span>E:\hsqldbTest目录下创Z?/span>HsqlDemo.java文gQ内容如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import org.hsqldb.jdbcDriver; public class HsqlDemo { public static void main(String[] args) { try { Class.forName("org.hsqldb.jdbcDriver"); Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/mydb", "sa", ""); if (c != null) { System.out.println("Connected db success!"); String sql = "CREATE TABLE TBL_USERS(ID INTEGER, NAME VARCHAR, BIRTHDAY DATE);"; Statement st = c.createStatement(); st.execute(sql); sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES ('1', 'ADMIN', SYSDATE);"; st.executeUpdate(sql); if (st != null) { st.close(); } c.close(); } } catch(Exception e) { System.out.println("ERROR:failed to load HSQLDB JDBC driver."); e.printStackTrace(); return; } } } 2. ?/span>E:\hsqldbTest目录下徏立一?/span>runJava.bat文gQ用来运?/span>HsqlDemo.java。内容如下: @echo off set path=D:\Program Files\Java\jdk1.6.0_05\bin # jdk的\?/span> javac -classpath lib/hsqldb.jar HsqlDemo.java java -cp lib/hsqldb.jar;./ HsqlDemo # 注意./ 后面的空|./[I格] HsqlDemo 3. 定mydb数据库已l启动,如果没有Q运?/span>runServer2.batQ启动数据库?/span> 4. q行runJava.bat文gQ运行程序,如果无异生,说明已正执行,此时Q可以在mydb.log文g中看到创建的TBL_USERSQ插入的记录Q当Ӟ可以用图形工h看表?/span> OKQ以上就是所有的hsqldb启动q程和连?/span>jdbc的过E?/span> Hsqldb有四U运行模式: 一?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none">
]]>
二?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> q行Q?/span>In-ProcessQ模式:此模式从应用E序启动数据库,׃所有的数据都将写到文g中,所以,即ɽE序退出,数据也不会被销毁?/span>In-Process不需要另外启动,可以通过DriverManager.getConnection(jdbcUriName,”sa”,””)Q方式即可启动数据库。连?/span>JDBC的实例ؓQ?/span>
jdbc:hsqldb:file:/E:/hsqldb/data/dbname
jdbc:hsqldb:file:/opt/db/dbname
jdbc:hsqldb:file:dbname
三?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> 服务器模式:此模式下HSQLDB跟其它数据库服务器一P需要通过服务器的形式来进行启动,可以通过java –cp ../lib/hsqldb.jar org.hsqldb.Server –database.0 testdb –dbname.0 testdbName的命令启动一个守护进E。连?/span>JDBC的实例ؓQ?/span>jdbc:hsqldb:hsql://localhost:<port>/dbname
四?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> Web服务器模式:此模式以WEB服务器的形式启动Qƈ通过HTTP协议接受客户端命令。从1.7.2版本开始,Web服务器模式的HSQLDB开始支持事务处理。可以通过java –cp ../lib/hsqldb.jar org.hsqldb.WebServer –database.0 testdb –dbname.0 testdbname的命令来启动?/span>
重点讨论hsqldb服务器模式的启动Ҏ(gu)和连接和实际javaE序?/span>JDBCq接情况。假?/span>JDK已经安装到机器上Q环境变量等都正设|?/span>
首先?/span>E:\hsqldbTest目录下徏立两个子目录Q?/span>data?/span>lib目录Q?/span>data用来存放数据Q?/span>lib用来理jar包。将解压之后?/span>hsqldb中的lib目录下的hsqldb.jar文g拯?/span>E:\hsqldbTest\lib目录下?/span>
1Q?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> ?/span>hsqldbTest目录下创?/span>runServer.bat文gQ其内容为:
cd data
@java -classpath ../lib/hsqldb.jar org.hsqldb.Server
2Q?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> 保存runServer.bat文gQƈ双击q行该文Ӟ此时回弹出命令行H口Q如下图Q表C已启动HSQLDB数据库?img border="0" alt="" src="http://www.aygfsteel.com/images/blogjava_net/liuyz2006/a.jpg" width="667" height="429" />
此时Q在data目录下生了三个文gQ如Q?/span>
test.lck ——标识数据库锁状态?/span>
test.log ——q行数据库生的log信息Q它?yu)记录每一个运行和用户操作环节?/span>
test.properties——数据库的配置信息Q包括分配的内存大小{,可更具需要修攏V?/span>
注:如果在命令行H口中按?/span>[Ctrl] + [C]l合键,数据库将退出ƈ关闭?/span>
3Q?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> 再创?/span>runManager.bat文gQ用来启动图形界面管理工P其内容ؓQ?/span>
cd data
@java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager
4Q?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> 保存runManager.bat文gQƈ双击文gQ此时回弹出囑Ş界面Q注意,在进行这一不之前,必须保W二步已执行Q,如下图?br />
RecentQ将会列出最q的数据库配|?/span>
Setting Name: 讄名称Q这里不需要填?/span>
TypeQ选择服务器模式(HSQL Database Engine ServerQ?/span>
DriverQ驱动名Uͼ不需要修?/span>
URLQ?/span>JDBCq接Q无需修改
UserQ用户名,Ҏ(gu)需要设|?/span>
PasswordQ密码,Ҏ(gu)需要设|?/span>
5Q?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> 点击?/span>OK】按钮,卛_q接?/span>test数据库。如下图所C?/span>
此时Q我们可以在H口中创{操作,例如Q我们创Z?/span>TBL_USERS的表。在菜单栏中选择?/span>COMMAND?/span>->?/span>CREATE TABLE】命令,此时在右下文本框中显C创的命令,包括各式Q支持的cd{。我们创建的TBL_USERS表结构如下图所C?/span>
6Q?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> 点击?/span>Execute】按钮,如果无语法错误,SQL语句正常执行,此时Q选择菜单栏中的?/span>View?/span>->?/span>Refresh Tree】命令,左侧栏中显C创建的TBL_USERS。如下图所C。ƈ且查?/span>test.log文gQ创的过E都全部记录?/span>
7Q?span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal; -x-system-font: none"> 另外q可以用DatabaseManagerSwing工具启动囑Ş界面。创?/span>runManagerSwing.bat文gQ内容ؓQ?/span>
cd data
@java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
保存文gQ双击该文gQ将启动Swing囑Ş界面Q如下图所C,具体的操作过E和DatabaseManager工具cMQ不再重复?/span>
以上是启动hsqldb数据库和创徏表的整个q程Q其它的功能可以通过多次联系卛_掌握。按照以上操作方式,hsqldb自动生一?/span>test的数据库。但是有时候我们需要自己指定数据库Q数据库讉K名,数据库访问端口等Q该如何实现呢,很简单。只要在相对根目录下创徏一?/span>server.properties文g卛_?/span>
创徏自己制定的数据库Q?/span>
1. 首先?/span>E:\hsqldbTest目录下创Z?/span>server.properties文gQ文件内容ؓQ注Q在实际文g中,删除后面的注释内容)Q?/span>
server.port=9001 #指定端口号ؓ9001
server.database.0=file:data/mydb # 在data目录下创?/span>mydb数据?/span>
server.dbname.=mydb #指定数据库名Q?/span>jdbcq接时就是用此名U?/span>
server.silent=true
2. ?/span>E:\hsqldbTest目录下创?/span>runServer2.bat文gQ文件内容ؓ
@java -classpath lib/hsqldb.jar org.hsqldb.Server
3. 双击q行runServer2.bat文gQ将会在data目录下创?/span>mydb数据库,q启动数据库?/span>
4. 双击q行已创建好?/span>runManagerSwing.bat文gQ打开囑Ş理界面Qƈ讄q接?/span>mydb数据库中Q如下图所C:
5. 配置好选项Q点凅R?/span>OK】按钮,卛_q接?/span>mydb数据库,在窗口中可以按照以前的步骤创Q添加记录等操作?/span>
好了Q以上就是整?/span>hsqldb的安装、启动、创{的全过E,在这里特别说明的是,hsqldb.1.8.1.3是用JDK.1.5以上的版本的~译的,所以,如果你用的是低?/span>jdk1.5的版本时Q可能出现异常情况,不能正常使用。另外,即你安装的jdk版本?/span>1.5以上的,可能q会出现异常Q该如何办呢Q此Ӟ保你的hsqldb是在官方|站下蝲的,需要检查你?/span>java的环境变量,׃你的机器可能安装?/span>oracleQ很有可能出现问题,此时只需?/span>%JAVA_HOME%\bin路径攄?/span>path路径的最开_q样Q就不会出现异常情况了?/span>
接下来,我们通过一个具体的javaE序来连接徏立好?/span>mydb数据库,q且?/span>mydb数据库中创徏一?/span>TBL_USERS的表。ƈ插入一条记录?/span>
1. ?/span>E:\hsqldbTest目录下创Z?/span>HsqlDemo.java文gQ内容如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.hsqldb.jdbcDriver;
public class HsqlDemo {
public static void main(String[] args) {
try {
Class.forName("org.hsqldb.jdbcDriver");
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/mydb", "sa", "");
if (c != null) {
System.out.println("Connected db success!");
String sql = "CREATE TABLE TBL_USERS(ID INTEGER, NAME VARCHAR, BIRTHDAY DATE);";
Statement st = c.createStatement();
st.execute(sql);
sql = "INSERT INTO TBL_USERS(ID, NAME, BIRTHDAY) VALUES ('1', 'ADMIN', SYSDATE);";
st.executeUpdate(sql);
if (st != null) {
st.close();
}
c.close();
}
} catch(Exception e) {
System.out.println("ERROR:failed to load HSQLDB JDBC driver.");
e.printStackTrace();
return;
}
}
}
2. ?/span>E:\hsqldbTest目录下徏立一?/span>runJava.bat文gQ用来运?/span>HsqlDemo.java。内容如下:
@echo off
set path=D:\Program Files\Java\jdk1.6.0_05\bin # jdk的\?/span>
javac -classpath lib/hsqldb.jar HsqlDemo.java
java -cp lib/hsqldb.jar;./ HsqlDemo # 注意./ 后面的空|./[I格] HsqlDemo
3. 定mydb数据库已l启动,如果没有Q运?/span>runServer2.batQ启动数据库?/span>
4. q行runJava.bat文gQ运行程序,如果无异生,说明已正执行,此时Q可以在mydb.log文g中看到创建的TBL_USERSQ插入的记录Q当Ӟ可以用图形工h看表?/span>
OKQ以上就是所有的hsqldb启动q程和连?/span>jdbc的过E?/span>