h2database官网

http://www.h2database.com/html/main.html
H2 的 1.4.200 版跨平台压缩包下载地址为 https://h2database.com/h2-2019-10-14.zip

下载客户端控制台

H2数据库简单使用操作 - 图1

h2database Maven配置

  1. <dependency>
  2. <groupId>com.h2database</groupId>
  3. <artifactId>h2</artifactId>
  4. <version>1.4.199</version>
  5. </dependency>

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

1.1建库

windows系统下点击h2/bin/h2.bat启动控制台应用程序
H2数据库简单使用操作 - 图2

鼠标右键点击桌面右下角图标 Create a new database…
H2数据库简单使用操作 - 图3

例如在k盘h2目录下新建helloForm数据库,则填写路径为k:/h2/helloForm
H2数据库简单使用操作 - 图4

1.2控制台连接数据库

开打控制台,点击H2 Console
H2数据库简单使用操作 - 图5

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表示取消默认的自动转换成大写。在建表时字段可以区分大小写,在查询数据时,也应该严格区分表名,与字段的大小写

H2数据库简单使用操作 - 图6

成功进入浏览器控制台
H2数据库简单使用操作 - 图7

2 基本使用代码

  1. package com.h2;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. /**
  7. * @Description: H2内嵌数据库的基本使用
  8. * @author: haidnor
  9. */
  10. public class H2Test {
  11. /**
  12. * 以嵌入式(本地)连接方式连接H2数据库
  13. */
  14. private static final String JDBC_URL = "jdbc:h2:K:/Java/H2Test/user";
  15. /**
  16. * 使用TCP/IP的服务器模式(远程连接)方式连接H2数据库(推荐)
  17. */
  18. // private static final String JDBC_URL = "jdbc:h2:tcp://10.35.14.122/C:/H2/user";
  19. // 数据库管理员用户名,用户名不区分大小写
  20. private static final String USER = "root";
  21. // 数据库管理员用户名
  22. private static final String PASSWORD = "root";
  23. //数据库驱动
  24. private static final String DRIVER_CLASS = "org.h2.Driver";
  25. public static void main(String[] args) throws Exception {
  26. // TODO Auto-generated method stub
  27. Class.forName(DRIVER_CLASS);
  28. // 数据库连接,如果目录下没有指定数据库,会自动生成
  29. Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
  30. // 获取数据库操作对象statement
  31. Statement statement = conn.createStatement();
  32. // 建库
  33. statement.execute("DROP TABLE IF EXISTS USER_INF");
  34. // 建表
  35. statement.execute("CREATE TABLE USER_INF(id INTEGER PRIMARY KEY, name VARCHAR(100), sex VARCHAR(2))");
  36. // 插入数据操作
  37. statement.executeUpdate("INSERT INTO USER_INF VALUES(1, 'tom', '男') ");
  38. statement.executeUpdate("INSERT INTO USER_INF VALUES(2, 'jack', '女') ");
  39. statement.executeUpdate("INSERT INTO USER_INF VALUES(3, 'marry', '男') ");
  40. statement.executeUpdate("INSERT INTO USER_INF VALUES(4, 'lucy', '男') ");
  41. // 查询数据
  42. ResultSet resultSet = statement.executeQuery("select * from USER_INF");
  43. // 遍历打印数据
  44. while (resultSet.next()) {
  45. System.out.println(
  46. resultSet.getInt("id") + ", "
  47. + resultSet.getString("name") + ", "
  48. + resultSet.getString("sex"));
  49. }
  50. // 关闭数据库连接
  51. statement.close();
  52. conn.close();
  53. }
  54. }

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

  1. package com.h2;
  2. import org.h2.jdbcx.JdbcConnectionPool;
  3. import java.sql.*;
  4. /**
  5. * @Description: H2数据库连接池的基本使用
  6. * @author Haidnor
  7. * @creat 2019-12-23-11:15
  8. */
  9. public class H2PoolTest {
  10. private static final String JDBC_URL = "jdbc:h2:tcp://localhost/K:/Java/H2Test/user";
  11. // 数据库管理员用户名,用户名不区分大小写
  12. private static final String USER = "root";
  13. // 数据库管理员用户名
  14. private static final String PASSWORD = "root";
  15. public static void main(String[] args) throws SQLException {
  16. // JDBC连接池
  17. JdbcConnectionPool pool = JdbcConnectionPool.create(JDBC_URL, USER, PASSWORD);
  18. // 建立连接超时时间
  19. pool.setLoginTimeout(10000);
  20. // 建立连接最大个数
  21. pool.setMaxConnections(100);
  22. Connection conn = pool.getConnection();
  23. // 获取数据库操作对象statement
  24. Statement statement = conn.createStatement();
  25. // 查询数据
  26. ResultSet resultSet = statement.executeQuery("select * from USER_INF");
  27. // 遍历打印数据
  28. while (resultSet.next()) {
  29. System.out.println(
  30. resultSet.getInt("id") + ", "
  31. + resultSet.getString("name") + ", "
  32. + resultSet.getString("sex"));
  33. }
  34. // 释放资源
  35. statement.close();
  36. // 关闭连接
  37. conn.close();
  38. }
  39. }