内存数据库HSQL初学

经常想写点简单的程序,或者演示系统,但是本地又没有数据库环境,

采用内存数据库 HSQL 比较合适,以下程序用于内存数据库。

ContextListener.java

 1 package com.xjh;
 2
 3 import java.io.BufferedReader;
 4 import java.io.InputStreamReader;
 5
 6 import javax.servlet.ServletContextEvent;
 7 import javax.servlet.ServletContextListener;
 8
 9 public class ContextListener implements ServletContextListener {
10
11     public void contextInitialized(ServletContextEvent event) {
12         try {
13             System.out.println("********begin********");
14             Class.forName("org.hsqldb.jdbcDriver");
15             InputStreamReader in = new InputStreamReader(getClass()
16                     .getClassLoader().getResourceAsStream("db.sql"));
17             BufferedReader reader = new BufferedReader(in);
18             DBUtil.setupDatabase(reader);
19             System.out.println("********end********");
20         } catch (ClassNotFoundException e) {
21             e.printStackTrace();
22         }
23
24     }
25
26     public void contextDestroyed(ServletContextEvent event) {
27
28     }
29
30 }

DBUtil.java

 1 package com.xjh;
 2
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.sql.Connection;
 6 import java.sql.DriverManager;
 7 import java.sql.SQLException;
 8 import java.sql.Statement;
 9
10 public class DBUtil {
11
12     public static void setupDatabase(BufferedReader reader) {
13         Connection c = null;
14         Statement stmt = null;
15         try {
16             c = openConnection();
17             stmt = c.createStatement();
18             String line = "";
19             String readLine = "";
20             while ((readLine = reader.readLine()) != null) {
21                 line = line + readLine;
22                 if (! readLine.endsWith(";")) {
23                     continue;
24                 } else {
25                     stmt.execute(line);
26                     line = "";
27                 }
28             }
29             stmt.close();
30             c.close();
31         } catch (IOException e) {
32             e.printStackTrace();
33         } catch (SQLException e) {
34             e.printStackTrace();
35         } finally {
36             try {
37                 stmt.close();
38                 c.close();
39             } catch (SQLException e) {
40                 e.printStackTrace();
41             }
42         }
43     }
44
45     public static Connection openConnection() throws SQLException {
46         Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:.", "sa",
47                 "");
48         return c;
49     }
50
51 }

database.properties

1 # hsql db set
2 driver=org.hsqldb.jdbcDriver
3 url=jdbc:hsqldb:mem:.
4 username=sa
5 password=

db.sql

 1 create table orders (
 2       orderid int not null,
 3       userid varchar(80) not null,
 4       orderdate date not null,
 5       shipaddr1 varchar(80) not null,
 6       shipaddr2 varchar(80) null,
 7       shipcity varchar(80) not null,
 8       shipstate varchar(80) not null,
 9       shipzip varchar(20) not null,
10       shipcountry varchar(20) not null,
11       billaddr1 varchar(80) not null,
12       billaddr2 varchar(80)  null,
13       billcity varchar(80) not null,
14       billstate varchar(80) not null,
15       billzip varchar(20) not null,
16       billcountry varchar(20) not null,
17       courier varchar(80) not null,
18       totalprice decimal(10,2) not null,
19       billtofirstname varchar(80) not null,
20       billtolastname varchar(80) not null,
21       shiptofirstname varchar(80) not null,
22       shiptolastname varchar(80) not null,
23       creditcard varchar(80) not null,
24       exprdate varchar(7) not null,
25       cardtype varchar(80) not null,
26       locale varchar(80) not null,
27       constraint pk_orders primary key (orderid)
28 );

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

	<display-name>xiejiaohui</display-name>
	<description>Online Fish Store Sample Application</description>

	<listener>
		<listener-class>com.xjh.ContextListener</listener-class>
	</listener>

</web-app>

  

时间: 2024-10-14 14:18:47

内存数据库HSQL初学的相关文章

jira使用

JIRA的生产者把JIRA定义为Professional Issue Tracker,即它是一个专业的问题跟踪管理的软件.这里的"问题"对应的英文单词是Issue,所以含义比较广,包括Bug,Task,Enhancement,Improvement等等跟软件开发相关的名词.跟踪管理即对问题的整个生命周期进行记录和管理.一个问题从创建到解决到关闭涉及到很多相关信息,包括是什么问题,谁发现的问题,谁处理了这个问题,如何处理的,相应的代码有什么改变等等,JIRA可以方便的记录这些信息,并且在

跟我学习Spring Security--在线宠物商店开发(一)

本应用遵循标准的三层结构,包括web层.服务层和数据访问层,如下图所示: web层封装了MVC的代码和功能.在示例代码中,我们使用了Spring MVC框架,但是我们可以一样容易的使用Spring Web Flow,Struts甚至是一个对Spring友好的web stack如Apache Wicket. 在一个典型使用Spring Security的web应用中,大量配置和参数代码位于web层.所以,如果你没有web应用开发,尤其是Spring MVC的经验,在我们进入更复杂的话题前,你最好仔

用JIRA管理你的项目———JIRA环境搭建

JIRA是一个优秀的问题(or bugs,task,improvement,new feature )跟踪及管理软件. 它由Atlassian开发,采用J2EE技术.它正被广泛的开源软件组织,以及全球著名的软件公司使用,它堪称是J2EE的Bugzilla. JIRA提供了全面的功能,界面十分友好,可用性以及可扩展性方面都十分出色,如果购买商业版许可,还可以得到JIRA的源码(在开发许可协议下可以定制自己的JIRA系统).目前比较先进出色流行的开发代码和版本控制的开源软件有:svn/git/vss

用JIRA管理你的项目——(一)JIRA环境搭建

JIRA,大家应该都已经不陌生了! 最初接触这个工具的时候,我还在一味地单纯依靠SVN管理代码,幻想着SVN可以有个邮件通知,至少在项目成员进行代码修改的时候,我可以第一时间通过邮件获得这个消息! 当然,如果手里管理的项目众多的时候,恐怕就要被淹没了! 通常,当我们有一项任务需要传达,并开始实施的时候,多半靠嘴说.再不行,为了防止抵赖.也为了帮助自己回忆,我们都把这些工作写到了邮件里.但是,还是很难控制项目进度.一些相关的资料没有版本控制,往往不能绑定具体项目,甚至细化到具体的任务上.单纯靠邮件

Redis初学及与Spring集成小结

Redis初学及与Spring集成小结 1.redis是干什么的? redis是一种key-value内存数据库.在技术日新月异的发展环境下,客户的访问需求也在逐渐增长,物理数据库的压力也越来越大,由此redis也应运而生. redis常用的方式是将redis作为缓存数据库,减小物理数据库的访问压力: 2.redis常用数据结构: a.strings: set key value;设置key-value值 get key;获取key的value值 redis...method(redis中的一些

In-Memory:内存数据库

在逝去的2016后半年,由于项目需要支持数据的快速更新和多用户的高并发负载,我试水SQL Server 2016的In-Memory OLTP,创建内存数据库实现项目的负载需求,现在项目接近尾声,系统运行稳定,写一篇博客,记录一下使用内存数据库的经验. SQL Server 2016的In-Memory OLTP,通俗地讲,是内存数据库,使用内存优化表(Memory-Optimized Table,简称MOT)来实现,MOT驻留在内存中,使用 Hekaton 内存数据库引擎访问.在查询MOT时,

STM32初学Keil4编译时出现 Error:Failed to execute &#39;BIN40/Armcc&#39;

一种是在系统开始--运行里输入cmd,查看armcc状态.详情见推文: http://blog.csdn.net/hicui/article/details/7350805(笔记记录,请勿见怪) 都没有问题的话,那么可以尝试: 在keil里的菜单栏依次选择Project->Manage->Components,Environment andBooks(CEB)(或者直接点击工具栏的图标), 然后在CEB里选择Folders/Extensions标签页,在RealView Folder里选择ke

mongodb 初学 目录

mongodb 初学 索引 啦啦啦 MongoDB 教程 NoSQL 简介 MongoDB 简介 Windows 平台安装 MongoDB Linux平台安装MongoDB mongodb 在 Ubuntu系统上的安装及卸载 Mongodb启动命令mongod参数说明 Mac OSX 平台安装 MongoDB MongoDB 概念解析 MongoDB - 连接 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB 插入文档 MongoDB 更新文档 MongoDB 删除文档 M

初学ArcGIS API for JavaScript

初学ArcGIS API for JavaScript 对于初学者来说,关于esri提供的一些样式和dojo自带的一些样式还是需要有一定的了解,这块在<WebGIS开发从基础到实践>讲解的特别详细,在这里以笔记的形式来帮助自己加以理解和记忆. esri.css样式主要用于ESRI提供的小部件与组件,比如地图.信息框等.此外,还可以引用Dojo提供的样式表,Dojo提供了4组样式,分别是claro\tundra\soria以及nihilo,每种是一组定义用户界面的字体.颜色与大小等设置.在Arc