1. 什么是H2数据库
H2数据库是用java代码编写的免费开源的内存型数据库,H2数据库具有的特点如下:
免费、开源、快速;
嵌入式的数据库服务器,支持集群
提供JDBC、ODBC访问接口,提供基于浏览器的控制台管理程序
Java编写,可使用GCJ和IKVM.NET编译
短小精干的软件,1M左右
和其它的数据库相比较
和其它的内存数据库相比较
2. 资源链接
H2官网地址
H2的demo下载地址
H2的官方参考文档
h2数据库的安装包是默认自带参考文档的,该文档就在安装目录下的docs文件夹下。
3. 浏览器客户端的使用
h2的数据库安装比较的简单,这里我就不做过多的介绍,在安装完成后,点击【开始】菜单中的H2的Console菜单,打开h2的控制台窗口,如下图所示:
在该窗口打开的同时,浏览器也会相应的打开网页版的H2数据库连接界面,如下所示:
在该界面中,我们没必要做任何修改操作,直接点击【测试链接】按钮,看看在测试中是否会连接成功。如果测试成功,在页面下方会出现相应的连接成功提示信息
连接测试成功后,点击【连接】按钮,以此来完成数据库的登录操作。
登录后的界面如下所示:
H2的浏览器客户端的使用非常的简单,由于H2数据库的语法是高度类似于MySQL的,所以说只要是懂得使用MySQL的人都能很容易的上手,除此之外,H2数据库还提供了操作的SQL语言样例,该样例就在登录H2浏览器客户端的主页面下方有提供,如下:
直接复制该区域中的SQL语句,并将其粘贴到【执行】下的文本域中,点击【执行】按钮即可。
4. 连接数据库驱动
连接的代码如下:
package com.lyc;
import org.apache.log4j.Logger;
import org.junit.Test;
import java.sql.*;
/**
* Created by HP on 2017/9/10.
*/
public class TestH2Connection {
private static final Logger log = Logger.getLogger(TestH2Connection.class);
@Test
public void testH2Connection() throws ClassNotFoundException, SQLException {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST ");
while(rs.next()) {
log.info("ID:" + rs.getInt("ID") + "," + "NAME:" + rs.getString("NAME"));
}
rs.close();
stmt.close();
conn.close();
}
}
上述的代码在我的H2的demo中有,直接将该项目下载下来在本地运行即可。
5. 连接数据库连接池
连接数据库连接池的代码如下:
package com.lyc;
import org.apache.log4j.Logger;
import org.h2.jdbcx.JdbcConnectionPool;
import org.junit.Test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* Created by HP on 2017/9/10.
*/
public class TestH2JdbcConnectionPool {
private static final Logger log = Logger.getLogger(TestH2JdbcConnectionPool.class);
@Test
public void testH2JdbcConnectionPool() throws SQLException {
JdbcConnectionPool cp = JdbcConnectionPool.create(
"jdbc:h2:~/test", "sa", "");
/*for (String sql : args) {
Connection conn = cp.getConnection();
conn.createStatement().execute(sql);
conn.close();
} */
Connection conn = cp.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST ");
while(rs.next()) {
log.info("ID:" + rs.getInt("ID") + "," + "NAME:" + rs.getString("NAME"));
}
rs.close();
stmt.close();
conn.close();
cp.dispose();
}
}
在连接数据库时,官方的推荐是采用第二种,也就是采用数据库连接池的方式进行的连接,因为这样做的好处是连接速度比较快,比传统的连接方式要快上至少2倍。