




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
hsqldb快速入门数据库环境配置和使用首先从/下载一个hsqldb的稳定版本,解压后可以浏览解压目录下的index.html,它描述了各个目录所包含内容,在doc段里有一个重要的链接User Guide: index.html,有空好好研究吧!数据库实例创建在hsqldb的管理中,如果启动的数据库文件不存在,就新建该数据库文件。Hsldb启动Hsqldb的启动模式有三种主要模式,其他参见User Guide:l Server该模式就像启动mysql、oracle等数据库一样,数据库启动后作为一个服务存在,其他数据库工具可以通过jdbc的方式访问他,这是我们最熟悉的模式。启动脚本如下:java -cp hsqldb.jar org.hsqldb.Server -database.0 ./db/test -dbname.0 test后面参数:-database.n 数据库文件(其他数据库中对应:数据库实例)地址,支持相对路径,注意使用反斜杠-dbname.n 数据库文件的访问同义词,就是用这个名称访问数据库的server模式jdbc访问方式:Connection c = DriverManager.getConnection(jdbc:hsqldb:hsql:/localhost:9002/test, sa, );可以启动多个数据库文件,例如:java -cp hsqldb.jar org.hsqldb.Server -database.0 ./db/test0 -dbname.0 test0 -database.1 ./db/test1 -dbname.1 test1l In-Process (Standalone)该模式更接近于文件型数据库这个概念,当你访问时他就启动,这种模式访问速度最快,缺点是只能当前访问线程使用,其他数据库工具不能同时访问。例如jdbc访问:Connection c = DriverManager.getConnection(jdbc:hsqldb:file:/opt/db/testdb, sa, );l In-Memory顾名思义,内存中的数据库,你所做的数据库ddl、dml不会写入磁盘,也是当你访问时他就启动。例如jdbc访问:Connection c = DriverManager.getConnection(jdbc:hsqldb:mem:aname, sa, );Hsqldb 管理工具hsqldb.jar中自带了一个数据库管理工具:DatabaseManagerSwing(Swing界面,还有一个是Awt界面的:DatabaseManager),该工具可以通过jdbc访问多种数据库。我们使用server模式启动hsqldb数据库,然后运行下列命令:java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing就可打开主界面连接时注意选择:Type,应该是HSQL Database Engine Server对于第一次使用可以使用它自带的功能,创建一些测试表,挺好的吧:好了你就可以写些语法数据库语法了:你可以直接关闭它但数据库不受影响,仍然启动着。Hsldb关闭对于任何一种启动模式,都可以在输入sql脚本的状态输入:SHUTDOWN 或 SHUTDOWN COMPACT 语法来关闭数据库。对于In-process和In-memory这两种模式只要所有的连接关闭了,数据库也就关闭了。Server模式参数设置在server模式下可以设置一些参数,主要的例如访问端口,可以参见User Guide的第四章高级属性,一般我们可以在启动脚本的目录下编辑一个perties,内容如下:server.port=9002server.trace=trueSqltool工具使用在目录srcorghsqldbsample下有一个sqltool.rc文件,将其拷贝到工具使用命令目录中,修改如下片断:urlid testurl jdbc:hsqldb:hsql:/localhost:9002/testusername sapassword其中urlid就是启动hsqldb的参数-dbname.0 test然后使用如下命令:java -jar hsqldb.jar -sql select * from customer -rcfile sqltool.rc test大家可以通过“java -jar hsqldb.jar help”看看其他的参数好了给大家一个整理的压缩包,别忘了装jdk1.4在web应用中嵌入hsqldb写一个Listener将hsqldb嵌入到web应用首要解决的问题是数据库的启动和关闭问题,参考springside项目的方法加入一个容器级的Listener,代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import mons.lang.StringUtils;import org.apache.log4j.Logger;import org.hsqldb.Server;/* * 该类的职责是在WebApp启动时自动开启HSQL服务. 依然使用Server方式,不受AppServer的影响. * * author frank * author calvin */public class HsqlListener implements ServletContextListener protected Logger logger = Logger.getLogger(getClass(); /* * (非 Javadoc) * * see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent) */ public void contextInitialized(ServletContextEvent sce) ( = HsqlListener initialize.); / 获得数据库文件访问路径 String path = getDbPath(sce); if (!path.endsWith(/) path = path + /; if (StringUtils.isEmpty(path) ( = Cant get hsqldb.path from web.xml Context Param); return; logger.debug(hsqldb_path: + path); / 数据库文件名 String dbName = sce.getServletContext().getInitParameter(hsql.dbName); if (StringUtils.isEmpty(dbName) ( = Cant get hsqldb.dbName from web.xml Context Param); return; / 数据库访问端口 int port = -1; try port = Integer.parseInt(sce.getServletContext().getInitParameter(hsql.port); catch (Exception e) e.printStackTrace(); return; / 启动数据库 startServer(path, dbName, port); /* * 获得数据库文件访问路径 * * param sce * return */ private String getDbPath(ServletContextEvent sce) String path = sce.getServletContext().getInitParameter(hsql.dbPath); if (path.startsWith(user.home) path = path.replaceFirst(user.home, System.getProperty(user.home).replace(, /); if (path.startsWith(webapp.root) path = path.replaceFirst(webapp.root, sce.getServletContext().getRealPath(/).replace(, /); return path; /* * 启动数据库 * * param dbPath * param dbName * param port */ private void startServer(String dbPath, String dbName, int port) Server server = new Server(); server.setDatabaseName(0, dbName); server.setDatabasePath(0, dbPath + dbName); if (port != -1) server.setPort(port); server.setSilent(true); server.setTrace(true); server.start(); ( = hsqldb started.); / 等待Server启动 try Thread.sleep(800); catch (InterruptedException e) e.printStackTrace(); /* * (非 Javadoc) * * see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent) */ public void contextDestroyed(ServletContextEvent sce) ( = HsqlListener destroyed.); Connection conn = null; try Class.forName(org.hsqldb.jdbcDriver); conn = DriverManager.getConnection(jdbc:hsqldb:hsql:/localhost:9002/weed, sa, sa); Statement stmt = conn.createStatement(); stmt.executeUpdate(SHUTDOWN;); ( = hsqldb shutdown.); catch (Exc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体校解剖课讲解
- 云南省元江一中2026届高三上化学期中复习检测模拟试题含解析
- 卫生习惯宣讲
- 如何打扫学校卫生
- 学前班学期末汇报展示
- 三顾茅庐课堂讲解
- 前端技术团队规划
- 胚胎学输卵管讲解
- 汽车电控技术发展
- 认养一头牛供应链体系解析
- 教师课堂管理方法和技巧课件
- 伍德灯在寻找炎症性皮肤病变中的应用价值研究
- 预防老年人保健品骗局
- 安全生产培训(完整版)课件
- 钢结构长廊施工方案
- 信保业务自查问题统计表
- 年产3万吨环保型铝箔容器系列产品生产线项目环境影响报告
- 安庆汇辰药业有限公司高端原料药、医药中间体建设项目环境影响报告书
- 关于术中知晓预防和脑功能监测专家共识
- 河道修防工高级工试题
- GB/T 4458.3-2013机械制图轴测图
评论
0/150
提交评论