H2数据库简单使用操作

h2database官网

http://www.h2database.com/html/main.html

下载客户端控制台

h2database Maven配置

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.199</version>
</dependency>

1 控制台新建数据库与连接数据库

1.1建库

windows系统下点击h2/bin/h2.bat启动控制台应用程序

鼠标右键点击桌面右下角图标 Create a new database...

例如在k盘h2目录下新建helloForm数据库,则填写路径为k:/h2/helloForm

1.2控制台连接数据库

开打控制台,点击H2 Console

driver class 与 jdbc url 有多种填写方式,详情参考官网说明文档

在这里使用 org.h2.Driver 驱动

jdbc url填写为 jdbc:h2:tcp://localhost/k:/h2/helloForm;database_to_upper=false

  • 其中tcp://localhost/表示使用TCP / IP的服务器模式(远程连接),该方式允许有多个客户端同时连接一个数据库
  • 后缀;database_to_upper=false表示取消默认的自动转换成大写。在建表时字段可以区分大小写,在查询数据时,也应该严格区分表名,与字段的大小写

成功进入浏览器控制台

2 基本使用代码

package com.h2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * @Description: H2内嵌数据库的基本使用
 * @author: haidnor
 */
public class H2Test {

    /**
     * 以嵌入式(本地)连接方式连接H2数据库
     */
    private static final String JDBC_URL = "jdbc:h2:K:/Java/H2Test/user";

    /**
     * 使用TCP/IP的服务器模式(远程连接)方式连接H2数据库(推荐)
     */
    // private static final String JDBC_URL = "jdbc:h2:tcp://10.35.14.122/C:/H2/user";

    // 数据库管理员用户名,用户名不区分大小写
    private static final String USER = "root";
    // 数据库管理员用户名
    private static final String PASSWORD = "root";
    //数据库驱动
    private static final String DRIVER_CLASS = "org.h2.Driver";

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        Class.forName(DRIVER_CLASS);
        
        // 数据库连接,如果目录下没有指定数据库,会自动生成
        Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);

        // 获取数据库操作对象statement
        Statement statement = conn.createStatement();

        // 建库
        statement.execute("DROP TABLE IF EXISTS USER_INF");
        // 建表
        statement.execute("CREATE TABLE USER_INF(id INTEGER PRIMARY KEY, name VARCHAR(100), sex VARCHAR(2))");
        // 插入数据操作
        statement.executeUpdate("INSERT INTO USER_INF VALUES(1, 'tom', '男') ");
        statement.executeUpdate("INSERT INTO USER_INF VALUES(2, 'jack', '女') ");
        statement.executeUpdate("INSERT INTO USER_INF VALUES(3, 'marry', '男') ");
        statement.executeUpdate("INSERT INTO USER_INF VALUES(4, 'lucy', '男') ");
        // 查询数据
        ResultSet resultSet = statement.executeQuery("select * from USER_INF");

        // 遍历打印数据
        while (resultSet.next()) {
            System.out.println(
                    resultSet.getInt("id") + ", "
                    + resultSet.getString("name") + ", "
                    + resultSet.getString("sex"));
    }
        // 关闭数据库连接
        statement.close();
        conn.close();
    }

}

H2数据库连接池的基本使用

package com.h2;

import org.h2.jdbcx.JdbcConnectionPool;
import java.sql.*;

/**
 * @Description: H2数据库连接池的基本使用
 * @author Haidnor
 * @creat 2019-12-23-11:15
 */
public class H2PoolTest {

    private static final String JDBC_URL = "jdbc:h2:tcp://localhost/K:/Java/H2Test/user";

    // 数据库管理员用户名,用户名不区分大小写
    private static final String USER = "root";
    // 数据库管理员用户名
    private static final String PASSWORD = "root";

    public static void main(String[] args) throws SQLException {

        // JDBC连接池
        JdbcConnectionPool pool = JdbcConnectionPool.create(JDBC_URL, USER, PASSWORD);
        // 建立连接超时时间
        pool.setLoginTimeout(10000);
        // 建立连接最大个数
        pool.setMaxConnections(100);

        Connection conn = pool.getConnection();
        // 获取数据库操作对象statement
        Statement statement = conn.createStatement();

        // 查询数据
        ResultSet resultSet = statement.executeQuery("select * from USER_INF");
        // 遍历打印数据
        while (resultSet.next()) {
            System.out.println(
                    resultSet.getInt("id") + ", "
                            + resultSet.getString("name") + ", "
                            + resultSet.getString("sex"));
        }
        // 释放资源
        statement.close();
        // 关闭连接
        conn.close();
    }
}
原文地址:https://www.cnblogs.com/Haidnor/p/12082472.html