import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.logging.Level;

import java.util.logging.Logger;

import org.hsqldb.Server;

import org.hsqldb.result.Result;

/**

* 方便单机程序使用HSQL的工具类,包括启动,关闭,连接。数据库默认不加密,用户为sa,密码空

* @author 郑高强

*/

public class HSQL_Util {

public static final int PORT = 9002;

public static final String DB_NAME = "kenko";       //数据库文件名,同时也是本类中的数据库名

public static final String DB_PATH = "./db/";

public static final String USER_NAME = "sa";

public static final String PASSWORD = "";

public static final int SERVER_MODE = 0;

public static final int STAND_ALONE_MODE = 1;   //In-Process

public static int mode = SERVER_MODE;          //记录当前用什么模式,开发时用Server,发布时用standalone

/**

* 测试

*/

public static void main(String[] args) {

HSQL_Util.mode = HSQL_Util.STAND_ALONE_MODE;

HSQL_Util.startHSQL();

//        Connection conn = HSQL_Util.getConnection();

try {

createDB();

//            testQuery();

} catch (SQLException ex) {

Logger.getLogger(HSQL_Util.class.getName()).log(Level.SEVERE, null, ex);

}

HSQL_Util.stopHSQL();

}

private static void createDB() throws SQLException {

Statement statement = getConnection().createStatement();

statement.executeUpdate("create table customer2(id integer not null primary key,firstname varchar(100),lastname varchar(100))");

for (int i = 10; i < 60000; i++) {

statement.executeUpdate("insert into customer2 values(" + i + ",'liu','zhaoyang')");

}

statement.close();

}

private static void testQuery() throws SQLException {

Connection conn = HSQL_Util.getConnection();

ResultSet r = conn.createStatement().executeQuery("select * from customer");

while(!r.isLast()){

r.next();

Object o = r.getObject(1);

Object o1 = r.getObject(2);

System.out.println(o.toString()+o1.toString());

}

}

/**

* 启动数据库服务

*/

public static boolean startHSQL() {

if (mode == SERVER_MODE) {

Server server = new Server();//它可是hsqldb.jar里面的类啊。

server.setDatabaseName(0, DB_NAME);

server.setDatabasePath(0, DB_PATH + DB_NAME);

server.setPort(PORT);

server.setSilent(true);

server.start();         //自动多线程运行

System.out.println("hsqldb started...");

} else if (mode == STAND_ALONE_MODE) {

//standalone模式,打开连接就同时启动数据库,所以这里可以什么都不做

System.out.println("hsqldb STAND_ALONE_MODE started...");

}

try {

Thread.sleep(800);        // 等待Server启动

} catch (InterruptedException e) {

}

return true;

}

/**

* 关闭数据库服务

*/

public static boolean stopHSQL() {

try {

Statement statement = getConnection().createStatement();

statement.executeUpdate("SHUTDOWN;");

return true;

} catch (SQLException ex) {

Logger.getLogger(HSQL_Util.class.getName()).log(Level.SEVERE, null, ex);

return false;

}

}

/**

* 获取连接

*/

public static Connection getConnection() {

Connection conn = null;

try {

Class.forName("org.hsqldb.jdbcDriver");

if (mode == SERVER_MODE) {

conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:" + PORT + "/" + DB_NAME, USER_NAME, PASSWORD);

} else if (mode == STAND_ALONE_MODE) {

conn = DriverManager.getConnection("jdbc:hsqldb:file:" + DB_PATH + DB_NAME, USER_NAME, PASSWORD);

}

} catch (ClassNotFoundException ex) {

Logger.getLogger(HSQL_Util.class.getName()).log(Level.SEVERE, null, ex);

} catch (SQLException ex) {

Logger.getLogger(HSQL_Util.class.getName()).log(Level.SEVERE, null, ex);

}

return conn;

}

}

HsqlDB Demo的更多相关文章

  1. SSH初体验系列--Hibernate--1--环境配置及demo

    最近在学hibernate,常见的教程都是搭配mysql,因为公司本地电脑用的是pg,所以就尝试着做个pg的小demo. 自己也是边学边写,只当是加深印象.话不多说,直接开始; 一) 准备工作; 1) ...

  2. HSQL基本使用(linux),安装+Demo

    文章目录 下载 安装 运行 使用数据库 demo 注意 下载 http://sourceforge.net/projects/hsqldb/files/ 安装 将下载的包,解压到任意目录即可 运行 通 ...

  3. 通过一个demo了解Redux

    TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...

  4. 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...

  5. 在线浏览PDF之PDF.JS (附demo)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...

  6. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

  7. vue双向数据绑定原理探究(附demo)

    昨天被导师叫去研究了一下vue的双向数据绑定原理...本来以为原理的东西都非常高深,没想到vue的双向绑定真的很好理解啊...自己动手写了一个. 传送门 双向绑定的思想 双向数据绑定的思想就是数据层与 ...

  8. Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决

    前提: 1.安装Android Studio(过程略) 2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本 3. ...

  9. iOS之ProtocolBuffer搭建和示例demo

    这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...

随机推荐

  1. 合并果子 2004年NOIP全国联赛普及组

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...

  2. PSP第九周

    一.表格 C(分类) C(内容) S(开始时间) ST(结束时间) I(打断时间) △(净工作时间) 学习 UML 12:30 13:20 0 50 编码 编码 20:00 22:10 0 130 学 ...

  3. Http中 Post和 Get的区别

    1.表面上的区别 1.GET在浏览器回退时,是无害的,而Post会再次提交请求 2.Get产生的Url地址会被Bookmark,而Post不会 3.Get请求会被浏览器主动Cache,而Post不会, ...

  4. 00 alv抬头等

    *&---------------------------------------------------------------------* *& Report ZHJ_TEST0 ...

  5. C++编写DLL的方法

    http://files.cnblogs.com/files/profession/DllTest.zip 在写C++程序时,时常需要将一个class写成DLL,供客户端程序调用.这样的DLL可以导出 ...

  6. css布局课件

    1.什么是CSS盒模型 我们的网页就是通过一个一个盒子组成的. 2.一个盒子拥有的属性:宽和高(width和height).内边距(padding).边框(border).外边距(margin) wi ...

  7. hibernate:Named query not known: findXXXX or XXXX is not mapped

    .hbm.xml文件所放的位置怎么看怎么都在spring配置的扫描路径中,就是会出现标题所示错误,查看log日志,的确也没发现XXXX被mapped的记录~ 参考解决方案: 在eclipse导出jar ...

  8. 6个错误将杀死你的App

    没有开发者或者设计师会故意破坏应用的设计.所有的应用程序创建者都对自己的应用寄予美好的愿望,但是很多错误是在他们无意识的状态下破坏app的设计.以下是应用开发者和设计者经常犯的几个错误,不过这些错误是 ...

  9. java 8 原版 api 下载地址,

    http://download.oracle.com/otn-pub/java/javafx/8.0.25-b17/javafx-8u25-apidocs.zip?AuthParam=14174994 ...

  10. C#:比较二个字符串,查找出相同字数和差异字符

            ;; i < n; i++)             {                 ) == s2.Substring(i, ))                 /*同位 ...