概述
纯Java实现开源关系数据库,支持嵌入式、服务器和混合三种运行模式,具备轻量化(约2MB JAR文件)和跨平台特性。该数据库采用多版本并发控制(MVCC)机制优化并发访问性能,支持SQL标准的大部分功能,并兼容MySQL语法。
maven依赖
xml
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.210</version>
</dependency>
示例
- 内存模式
java
@Test
void contextLoads() throws ClassNotFoundException, SQLException {
Class.forName("org.h2.Driver");
Connection connection = DriverManager.getConnection("jdbc:h2:mem:test");
Statement statement = connection.createStatement();
//创建表
statement.execute("create table tb_demo(id integer not null, name TEXT);");
//插入数据
statement.execute("insert into tb_demo(id,name) values (1,'bob');");
statement.execute("insert into tb_demo(id,name) values (2,'pop');");
//查询数据
ResultSet resultSet = statement.executeQuery("select * from tb_demo");
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id: " + id + " name: " + name);
}
}
- 文件模式
java
@Test
void contextLoads1() throws ClassNotFoundException, SQLException {
Class.forName("org.h2.Driver");
//文件模式,会将数据库文件存储在指定位置。配置数据库文件生成会自动加 .mv.db 后缀名
Connection connection = DriverManager.getConnection("jdbc:h2:file:E:\\db\\h2");
Statement statement = connection.createStatement();
//创建表
statement.execute("create table tb_demo(id integer not null, name TEXT);");
//插入数据
statement.execute("insert into tb_demo(id,name) values (1,'bob');");
statement.execute("insert into tb_demo(id,name) values (2,'pop');");
//查询数据
ResultSet resultSet = statement.executeQuery("select * from tb_demo");
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("id: " + id + " name: " + name);
}
}