日期:2014-05-16  浏览次数:20648 次

hsqldb源码分析启动调试

??

?hsqldb是java版的简化数据库,代码量比较少,对于学习数据库的设计是一个比较好的选择,

对于derby代码量比较大,mysql c++更复杂,所以就通过学习hsqldb来学习数据库的设计。

在这里可以下载到源码http://hsqldb.org/,源码包下org.hsqldb.test有很多的测试类,大家可以从这里开始调试学习hsqldb。

?

HyperSQL?数据库叫catalog,根据数据库存储方式不同分为几种:

? mem: stored entirely in RAM - without any persistence beyond the JVM process's life
? file: stored in filesystem files

? res: stored in a Java resource, such as a Jar and always read-only

?

客户端可以通过连接串不同指定不同的存储格式

?

 Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "SA", "");
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "SA", "");file:数据保存在文件
 Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");mem表示数据库只保存在内存
  Connection c = DriverManager.getConnection("jdbc:hsqldb:res:org.my.path.resdb", "SA", ""); res表示压缩保存classpath java或者zip包中,内存解压使用

?

启动hyperSQL的服务器模式
HyperSQL HSQL Server ?可以使用参数--help查看参数选项,下面是打开mydb数据文件作为数据库别名为xdb,客户端就可以使用xdb数据库来连接服务器使用了。
java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:mydb --dbname.0 xdb
?HyperSQL HTTP Server http协议的服务器模式
java -cp ../lib/hsqldb.jar org.hsqldb.server.WebServer --database.0 file:mydb --dbname.0 xdb
?servlet容器启动服务器HyperSQL HTTP Servlet
需要在web.xml配置org/hsqldb/server/Servlet.java 这个servlet,这种模式只能支持一个数据库。
客户端连接到hsql server: