java hsqldb_HSQLDB: java程序使用hsqldb 入门教程 java启动hsqldb (初步hsqldb效率评估)...
使用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效率评估)...相关推荐
- 美团小程序框架mpvue入门教程
美团小程序框架mpvue入门教程 自打写了 美团小程序框架mpvue蹲坑指南, 一发不可收拾,今天趁周末空闲,来写个mpvue(没朋友)的简单入门教程,本教程只针对新手,老鸟勿喷. 另外,我还专门为本 ...
- vue 美团框架_美团小程序框架mpvue入门教程
美团小程序框架mpvue入门教程 本教程只针对新手,老鸟勿喷. 另外,我还专门为本文做了一个简单的项目,如果懒得从头开始搭项目的童鞋,可以直接去我的 github上克隆到本地, 安装一下依赖,即可直接 ...
- 微信小程序使用WeUI入门教程
微信小程序使用WeUI入门教程 在学习微信小程序过程中,很多组件的样式需要自己调整,且很多不是我们想要的样子.所以找到了WeUI这样的扩展组件库,预览了组件库,真的非常nice! 但是找不到怎么去引用 ...
- Java程序入门教程 | Java
有一个朋友这样告诉我:Java太难了!上课老师不讲代码,我怎么学?! 我也发现了,以我们学校为例吧.很多Java教学者似乎不太愿意细嗦代码怎么写.(在大一已经学习过C语言的基础上,Java其实真的很简 ...
- java编程输出平行四边形_JAVA语言入门教程之打印图形实例——打印平行四边形...
本文主要向大家介绍了JAVA语言入门教程之打印图形实例--打印平行四边形,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 输出平行四边形: public class Parallelo ...
- java语言打印图形_JAVA语言入门教程之打印图形实例——打印矩形
本文主要向大家介绍了JAVA语言入门教程之打印图形实例--打印矩形,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 输出矩形: public class Rect { public s ...
- JAVA基础入门教程——Java介绍
1. Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称,目前由Oracle拥有. Java可运行于多个平台,如Win ...
- java编程计算器程序代码_34 个送给 Java 程序员的练手项目合集
人类一生中,99% 的技能都是靠实践学来的,编程更是如此. 在这一点上,编程和打篮球很像:你得亲自上场去打,才能学会篮球:同样,亲手敲下代码,才能真正学会「编程」.太多人看完一本书.几个 G 的视频后 ...
- java管理从程序员到CTO的Java技术路线图
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 在技巧方面无论我们怎么学习,总感觉需要晋升自已不知道自己处于什么水平了.但如果有清晰的指示图 ...
- java编写应用程序_为您的Java应用程序编写数据驱动的测试
java编写应用程序 JUnit是一个功能非常强大的测试框架,它不仅为其用户提供了编写快速简便的测试的功能,而且还为用户提供了扩展它并使其按其期望的方式工作的机会. 在JUnit之上构建了许多框架,这 ...
最新文章
- 看看人家那后端API接口写得,那叫一个巴适~,再看看我的,像坨屎!
- 约瑟夫环(杀人游戏)
- magento模板 -- 如何安装magento模板
- RxJava系列(二)Scheduler线程调度器
- 算法笔记_面试题_15.回溯算法模板及示例
- JAVA中list,set,数组之间的转换详解
- 如何让jpa 持久化时不校验指定字段
- 苹果cmsv10自适应高仿时光影院视频网站免费模板
- html 做成ppt样式,HTML开发网页样式.ppt
- 杜绝网络黑手,谁来保障企业数据安全
- iOS 获取 appid
- 计算机桌面出现输入框,Mac电脑使用:桌面底部莫名出现白色输入框解决的解决办法...
- html 字体图标转换工具,HTML5 webfont字体图标的使用
- CENTOS: 安装memSQL
- Day374.shiro授权Shiro+jsp整合Springboot -Shiro
- caffe代码阅读8: Data_layers的实现细节(各个数据读取层的实现细节) 2016.3.25-28
- 【reID学习记录】Person_reID_baseline_pytorch学习
- 互联网摸鱼日报(2022-10-11)
- Revit API 开发(12): Revit 文件存储结构
- Mysql 错误 1366 Incorrect string value: ‘xxxxxxx‘ for column ‘xxxx‘ at row 1
热门文章
- SPSS基础教程:SPSS统计分析基础
- DSP开发,使用CCS软件建立工程以及烧录
- 3gfax服务器接收文件,3G-FAX单机版操作指南 - AOFAX—传真服务器,网络传真.DOC
- matlab做聚类分析(简单的直接用clusterdata)
- 单片机原理及应用c语言版课后答案魏鸿磊,单片机原理及应用
- java 游戏编程 (一)
- 直播无线领夹式麦克风
- 谷歌输入法linux下载官网下载软件,linux下安装谷歌拼音输入法
- Delphi FireMonkey 的动画以及多线程
- 千方百剂创建账套服务器文件,千方百剂辅助工具使用手册(图解