JAVA内嵌数据库H2的使用入门

简介: JAVA内嵌数据库H2的使用入门

H2数据库是开源的,非常适合做嵌入式数据库使用,尤其用java编码的时候。

H2的优势:
    1、h2采用纯Java编写,因此不受平台的限制。
    2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
    3、h2提供了一个十分方便的web控制台用于操作和管理数据库内容。

一、所需工具:

  JDK

  h2-1.4.x.jar

二、写代码如下:
···
package com.my.enter;

import java.sql.Connection;
import java.sql.SQLException;

import org.h2.jdbcx.JdbcConnectionPool;

public class ConnectionPool {

private static ConnectionPool cp = null;
private JdbcConnectionPool jdbcCP = null;

private ConnectionPool() {
    String dbPath ="./config/test";
    jdbcCP = JdbcConnectionPool.create("jdbc:h2:" + dbPath, "sa", "");
    jdbcCP.setMaxConnections(50);
}

public static ConnectionPool getInstance() {
    if (cp == null) {
        cp = new ConnectionPool();
    }
    return cp;
}

public Connection getConnection() throws SQLException {
    return jdbcCP.getConnection();
}

}

···
实例化时若数据库test.mv.db不存在,则会创建,路径是src的同级目录config/test.mv.db;

三、使用数据库:
···
package com.my.enter;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CommonDao {

public static void crateTable() throws SQLException {
    Connection conn = null;
    Statement stmt = null;
    try {
        conn = ConnectionPool.getInstance().getConnection();
        DatabaseMetaData meta = conn.getMetaData();

        ResultSet rsTables = meta.getTables(null, null, "WEATHERINFO",
                new String[] { "TABLE" });
        if (!rsTables.next()) {
            stmt = conn.createStatement();
            stmt.execute("CREATE TABLE WEATHERINFO(WEATHERSTR VARCHAR(1024),LASTMODIFYTIME VARCHAR(1024),STATUS VARCHAR(1024),PRIMARY KEY(WEATHERSTR,LASTMODIFYTIME))");
        }
        rsTables.close();
    } finally {
        releaseConnection(conn, stmt, null);
    }
}

public static void addInfo(String str, long lastModifyTime,
        String status) throws SQLException {
    Connection conn = null;
    PreparedStatement stmt = null;
    try {
        conn = ConnectionPool.getInstance().getConnection();

        stmt = conn
                .prepareStatement("INSERT INTO WEATHERINFO VALUES(?,?,?)");
        stmt.setString(1, str);
        stmt.setString(2, String.valueOf(lastModifyTime));
        stmt.setString(3, status);
        stmt.execute();

    } finally {
        releaseConnection(conn, stmt, null);
    }
}

public static boolean isInfoExits(String filePath, long lastModifyTime)
        throws SQLException {
    Connection conn = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try {
        conn = ConnectionPool.getInstance().getConnection();
        stmt = conn
                .prepareStatement("SELECT WEATHERSTR FROM WEATHERINFO WHERE STATUS=? AND LASTMODIFYTIME=?");
        stmt.setString(1, filePath);
        stmt.setString(2, String.valueOf(lastModifyTime));
        rs = stmt.executeQuery();
        return rs.next();
    } finally {
        releaseConnection(conn, stmt, rs);
    }
}

private static void releaseConnection(Connection conn, Statement stmt,
        ResultSet rs) throws SQLException {
    if (rs != null) {
        rs.close();
    }
    if (stmt != null) {
        stmt.close();
    }
    if (conn != null) {
        conn.close();
    }
}

}

···
实现对数据库的操作 包括建表,新增数据,查询等操作;

以上,应该是入门了!

相关文章
|
8天前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
55 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
11天前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
55 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
5天前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
20 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
1月前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
108 60
|
28天前
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
101 7
|
28天前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
91 6
|
28天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
52 2
|
2月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
97 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
23天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决

热门文章

最新文章