【DataBase】H2 DateBase的简单使用
H2介绍
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。
H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。
官网地址:http://www.h2database.com
H2是Java SQL数据库。H2的主要特点是:
- 非常快,开源,JDBC API
- 嵌入式和服务器模式; 内存数据库
- 基于浏览器的Console应用
- 占地面积小:大约2 MB的jar文件大小
H2用途
H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。
它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。
H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了。
H2运行模式
H2支持三种不同的运行模式,以适用于更多不同的应用场景。
1、嵌入式模式:
嵌入式模式下,应用与H2运行于同一个JVM中,H2被应用启动。该模式也是性能最好的模式,也是官方推荐的模式。
2、服务器模式
服务器模式下,H2被H2 Server启动(独立于应用的JVM),应用与数据分离,应用使用远程连接(如JDBC)访问数据库。类似于传统数据库的部署,服务器可以与应用部署与同一台机器,也可以部署与另一台机器。
实际上,H2 Server本身也是使用嵌入式模式来启动运行H2 Database的。显然,由于服务器模式是通过远程连接访问数据,其性能也要低于嵌入式模式。
3、混合模式
该模式是嵌入式模式与混合模式的融合。一个应用启动嵌入式模式的H2 Database,其他应用可以将其作为服务器模式来远程访问。
H2简单使用
1、H2数据库下载,打开官网(http://www.h2database.com)下载
2、解压下载包,即可使用,解压后目录如下
h2
|---bin
| |---h2-1.1.116.jar //H2数据库的jar包(驱动也在里面)
| |---h2.bat //Windows控制台启动脚本
| |---h2.sh //Linux控制台启动脚本
| |---h2w.bat //Windows控制台启动脚本(不带黑屏窗口)
|---docs //H2数据库的帮助文档(内有H2数据库的使用手册)
|---service //通过wrapper包装成服务。
|---src //H2数据库的源代码
|---build.bat //windows构建脚本
|---build.sh //linux构建脚本
3、windows环境下运行h2.bat,linux环境下运行h2.sh,打开控制台
4、windows环境下,运行文件后自动打开浏览器,地址:http://本地ip:8082
5、选择中文语言,并点击连接,自动创建test数据库,数据库文件在~目录中,~代表用户自己目录
6、复制测试脚本sql,并执行
7、运行结果如下:
H2使用JDBC连接
1、运行
2、新建maven项目,引入jar包
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
</dependency>
3、编辑JDBC测试类
package com.test.hsqldb; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* Hello world!
*
*/
public class App {
public static void main(String[] args) throws SQLException, ClassNotFoundException { // 加载H2 DB的JDBC驱动
Class.forName("org.h2.Driver"); // 链接数据库,自动在~创建数据库test,得到联接对象 connection
String url = "jdbc:h2:~/test";
Connection con = DriverManager.getConnection(url, "sa", ""); // 新建数据表
String ctreateTable = "DROP TABLE test IF EXISTS; create table test(id integer,name VARCHAR(22) )";
Statement createStatement = con.createStatement();
long f1 = createStatement.executeUpdate(ctreateTable);
System.out.println("创建表:" + f1); // 插入数据
String insertSql = "INSERT INTO test VALUES(1,'小明')";
Statement insertStatement = con.createStatement();
long f2 = insertStatement.executeUpdate(insertSql);
System.out.println("插入数据:" + f2); // 查询数据
String selectSql = "select id,name from test";
PreparedStatement prepareStatement = con.prepareStatement(selectSql);
// 发送SQL 返回一个ResultSet
ResultSet rs = prepareStatement.executeQuery(); // 编历结果集
while (rs.next())// 从数据库的取一行数据,是否还有下一行
{
int id = rs.getInt(1); // 从1开始
String name = rs.getString(2);
System.out.println("id:" + id + "\t名称:" + name);
} // 关闭连接
con.close(); }
}
4、运行测试类,结果如下:
【DataBase】H2 DateBase的简单使用的更多相关文章
- 【DataBase】H2 DateBase的拓展使用
连接模式 支持以下连接模式: 嵌入模式(使用JDBC的本地连接) 服务器模式(使用JDBC或ODBC over TCP / IP进行远程连接) 混合模式(同时本地和远程连接) 嵌入模式 在嵌入模式下, ...
- 用EF DataBase First做一个简单的MVC3报名页面
使用EF DataBase First做一个简单的MVC3报名网站 ORM(Object Relational Mapping)是面向对象语言中的一种数据访问技术,在ASP.NET中,可以通过ADO. ...
- If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
学习Spring Boot 过程中遇到了下列这个问题 Description: Failed to configure a DataSource: 'url' attribute is not spe ...
- h2数据库的简单使用
1.登录H2数据库的WebConsole控制台 2.设置数据库连接 3.连接测试通过之后,点击[连接]按钮,登录到test数据库的webConsole 4.创建表 复制H2数据库提供的样例SQL脚本, ...
- Consider the following: If you want an embedded database (H2, HSQL or Der...
这个坑把java进程干掉就可以了,因为占用了 Description: Failed to configure a DataSource: 'url' attribute is not specifi ...
- embedded database (H2, HSQL or Derby), please put it on the classpath
Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded data ...
- 【DataBase】H2 DateBase与项目集成
本例介绍H2与web项目的集成 项目启动H2数据库 1.新建Maven Web项目,参考:[Maven]Eclipse 使用Maven创建Java Web项目 2.引入h2的jar包依赖 <de ...
- 基于Swt、ffmpeg、jacob、vlc、SApi、h2技术编写简单的旁白生成器
一.简介: 前一段时间尝试录制了几集3D编程方面的视频教程,我发现录制时最大的障碍是让脑中的思考.手上的操作和嘴里的解说保持同步,一旦三个"线程"中有一个出错,就必须停下来重新录制 ...
- 【DataBase】Hsqldb的简单使用
介绍 HSQLDB是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的.具有Server模式,每个程序需要不同的命令来运行. HyperSQL ...
随机推荐
- 评估预测函数(2)---对hypothesis进行评估
当有多个features时,无法通过图像来评估hypothesis 当我们的hypothesis只有一个features时,可以通过观察它的图像来看它是否overfitting,但是如果我们有多个fe ...
- HTTP的幂等性
转自: https://www.jianshu.com/p/234cf2e96832 理解HTTP幂等性基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式.无论是在大型互联网应用还 ...
- Homebrew 更新慢问题
cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/hom ...
- 项目后端 - 虚拟环境搭建 | pycharm使用虚拟环境
虚拟环境的搭建 优点 1.使不同应用开发环境相互独立 2.环境升级不影响其他应用,也不会影响全局的python环境 3.防止出现包管理混乱及包版本冲突 windows 安装 # 建议使用pip3安装到 ...
- Apache Kylin在4399大数据平台的应用
来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie作者介绍:林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公司, ...
- [hdu contest 2019-07-29] Azshara's deep sea 计算几何 动态规划 区间dp 凸包 graham扫描法
今天hdu的比赛的第一题,凸包+区间dp. 给出n个点m个圆,n<400,m<100,要求找出凸包然后给凸包上的点连线,连线的两个点不能(在凸包上)相邻,连线不能与圆相交或相切,连线不能相 ...
- P1453 城市环路
题目背景 一座城市,往往会被人们划分为几个区域,例如住宅区.商业区.工业区等等.B市就被分为了以下的两个区域——城市中心和城市郊区.在着这两个区域的中间是一条围绕B市的环路,环路之内便是B市中心. 题 ...
- Python逆向(五)—— Python字节码解读
一.前言 前些章节我们对python编译.反汇编的原理及相关模块已经做了解读.读者应该初步掌握了通过反汇编获取python程序可读字节码的能力.python逆向或者反汇编的目的就是在没有源码的基础上, ...
- CSS3 clip-path & clip-path 打破矩形设计的限制
CSS 形状模块标准1(CSS Shapes Module Level 1)这个规范打破了 WEB 中的矩形盒模型的限制,并且将网页设计提升到一个新的高度. 关于 Shapes 规范 shape-ou ...
- 【caffe Layer】代码中文注释
src/caffe/proto/caffe.proto 中LayerParameter部分 // NOTE // Update the next available ID when you add a ...