使用java写单机小程序或者测试项目的时候,使用hsqldb是一个不错的选择。

介绍可以看这里:

http://www.javaeye.com/topic/78887

http://hi.baidu.com/mum0532/blog/item/b08c0c6d88e0faf9431694e5.html

从官网下载的压缩包,解压后的demo目录中,可以运行runManagerSwing,打开可视化管理界面(但没有可视化创建表,创建字段的功能)

连接的时候,先选择server模式,然后在下图的红框处输入启动服务的端口和数据库名称。例如jdbc:hsqldb:hsql://localhost:9002/test

这里9002是我程序启动hsqldb的时候使用的端口,test是建立的数据库名称

HSQLDB创建数据库和基本的数据库访问:

http://hi.baidu.com/hivemind/blog/item/83873bdf36611c1462279825.html

HSLQDB的sql语法跟MySQL的略有不同,使得很郁闷啊~~开始我都不知道怎么初始化HSQLdb的数据

HSQLDB和Hibernate结合的一个小例子:

http://hi.baidu.com/hivemind/blog/item/2c77fb00830e5a16738b6506.html

我自己写的一个Java类:(只需要加入hsqldb.jar即可)

/*** 方便单机程序使用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 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模式,打开连接就同时启动数据库,所以这里可以什么都不做 }

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;

}

/*** 测试*/

public static void main(String[] args) {

HSQL_Util.mode = HSQL_Util.STAND_ALONE_MODE;

HSQL_Util.startHSQL();

Connection conn = HSQL_Util.getConnection();

try {

Statement statement = getConnection().createStatement();

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

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

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

}

statement.close();

} catch (SQLException ex) {

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

}

HSQL_Util.stopHSQL();

}

}

运行上述的类,在项目目录,会生成一个db文件夹,里边有数据库的一些基本文件:

HSQL速度测试:

String note = "XXXX"; //这里省略,实际是800个中文字 System.out.println(note.length());

HSQL_Util.mode = HSQL_Util.STAND_ALONE_MODE;

HSQL_Util.startHSQL();

Connection conn = HSQL_Util.getConnection();

try {

Statement statement = getConnection().createStatement();

statement.executeUpdate("create cached tablecustomer(id integer not null primary key,firstname varchar,lastname varchar)");

for (int i = 1; i < 60000; i++) { //插入6万条数据用了43秒,生成262M的文件 statement.executeUpdate("insert into customer values(" + i + ",'" + note + "','zhaoyang')");

}

statement.executeQuery("select * from customer where id = 40"); //6万条数据用了9秒 statement.close();

} catch (SQLException ex) {

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

}

HSQL_Util.stopHSQL();

}

使用HSQL的时候,就需要注意创建表用什么类型了!!!

开始我不知道,使用了默认的Momery表,“create table” 测试了一下,速度慢得吐血。写6万条记录,用了五十多秒,而且只是写到3万多就崩溃了,内存溢出~~哈哈,其实也正常,十几M数据爆了~~然后从这3万个记录,select * from custemer where id = XX,用了几秒钟

后来我再找方法,换成cached方法,create cached table试了一下,果然有效果,直接写6万个记录,没有爆,用了43秒。

再select就用了9秒。相对而言,比momery表好一点。但看了一下数据文件,我~~~竟然生成了262M的数据文件!!!!!

唉,我累了~~不玩了,HSQL没有想象中这么好用~~还是老老实实,用MySQL,或者自己写txt吧~~

java hsqldb_HSQLDB: java程序使用hsqldb 入门教程 java启动hsqldb (初步hsqldb效率评估)...相关推荐

  1. 美团小程序框架mpvue入门教程

    美团小程序框架mpvue入门教程 自打写了 美团小程序框架mpvue蹲坑指南, 一发不可收拾,今天趁周末空闲,来写个mpvue(没朋友)的简单入门教程,本教程只针对新手,老鸟勿喷. 另外,我还专门为本 ...

  2. vue 美团框架_美团小程序框架mpvue入门教程

    美团小程序框架mpvue入门教程 本教程只针对新手,老鸟勿喷. 另外,我还专门为本文做了一个简单的项目,如果懒得从头开始搭项目的童鞋,可以直接去我的 github上克隆到本地, 安装一下依赖,即可直接 ...

  3. 微信小程序使用WeUI入门教程

    微信小程序使用WeUI入门教程 在学习微信小程序过程中,很多组件的样式需要自己调整,且很多不是我们想要的样子.所以找到了WeUI这样的扩展组件库,预览了组件库,真的非常nice! 但是找不到怎么去引用 ...

  4. Java程序入门教程 | Java

    有一个朋友这样告诉我:Java太难了!上课老师不讲代码,我怎么学?! 我也发现了,以我们学校为例吧.很多Java教学者似乎不太愿意细嗦代码怎么写.(在大一已经学习过C语言的基础上,Java其实真的很简 ...

  5. java编程输出平行四边形_JAVA语言入门教程之打印图形实例——打印平行四边形...

    本文主要向大家介绍了JAVA语言入门教程之打印图形实例--打印平行四边形,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 输出平行四边形: public class Parallelo ...

  6. java语言打印图形_JAVA语言入门教程之打印图形实例——打印矩形

    本文主要向大家介绍了JAVA语言入门教程之打印图形实例--打印矩形,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 输出矩形: public class Rect { public s ...

  7. JAVA基础入门教程——Java介绍

    1. Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称,目前由Oracle拥有. Java可运行于多个平台,如Win ...

  8. java编程计算器程序代码_34 个送给 Java 程序员的练手项目合集

    人类一生中,99% 的技能都是靠实践学来的,编程更是如此. 在这一点上,编程和打篮球很像:你得亲自上场去打,才能学会篮球:同样,亲手敲下代码,才能真正学会「编程」.太多人看完一本书.几个 G 的视频后 ...

  9. java管理从程序员到CTO的Java技术路线图

    查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 在技巧方面无论我们怎么学习,总感觉需要晋升自已不知道自己处于什么水平了.但如果有清晰的指示图 ...

  10. java编写应用程序_为您的Java应用程序编写数据驱动的测试

    java编写应用程序 JUnit是一个功能非常强大的测试框架,它不仅为其用户提供了编写快速简便的测试的功能,而且还为用户提供了扩展它并使其按其期望的方式工作的机会. 在JUnit之上构建了许多框架,这 ...

最新文章

  1. 看看人家那后端API接口写得,那叫一个巴适~,再看看我的,像坨屎!
  2. 约瑟夫环(杀人游戏)
  3. magento模板 -- 如何安装magento模板
  4. RxJava系列(二)Scheduler线程调度器
  5. 算法笔记_面试题_15.回溯算法模板及示例
  6. JAVA中list,set,数组之间的转换详解
  7. 如何让jpa 持久化时不校验指定字段
  8. 苹果cmsv10自适应高仿时光影院视频网站免费模板
  9. html 做成ppt样式,HTML开发网页样式.ppt
  10. 杜绝网络黑手,谁来保障企业数据安全
  11. iOS 获取 appid
  12. 计算机桌面出现输入框,Mac电脑使用:桌面底部莫名出现白色输入框解决的解决办法...
  13. html 字体图标转换工具,HTML5 webfont字体图标的使用
  14. CENTOS: 安装memSQL
  15. Day374.shiro授权Shiro+jsp整合Springboot -Shiro
  16. caffe代码阅读8: Data_layers的实现细节(各个数据读取层的实现细节) 2016.3.25-28
  17. 【reID学习记录】Person_reID_baseline_pytorch学习
  18. 互联网摸鱼日报(2022-10-11)
  19. Revit API 开发(12): Revit 文件存储结构
  20. Mysql 错误 1366 Incorrect string value: ‘xxxxxxx‘ for column ‘xxxx‘ at row 1

热门文章

  1. SPSS基础教程:SPSS统计分析基础
  2. DSP开发,使用CCS软件建立工程以及烧录
  3. 3gfax服务器接收文件,3G-FAX单机版操作指南 - AOFAX—传真服务器,网络传真.DOC
  4. matlab做聚类分析(简单的直接用clusterdata)
  5. 单片机原理及应用c语言版课后答案魏鸿磊,单片机原理及应用
  6. java 游戏编程 (一)
  7. 直播无线领夹式麦克风
  8. 谷歌输入法linux下载官网下载软件,linux下安装谷歌拼音输入法
  9. Delphi FireMonkey 的动画以及多线程
  10. 千方百剂创建账套服务器文件,千方百剂辅助工具使用手册(图解