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();
    }
}

}

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

以上,应该是入门了!

相关文章
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
104 3
SpringBoot入门 - 添加内存数据库H2
|
2月前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
71 5
|
12天前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
82 60
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
67 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
171 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
1月前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
2月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
64 4
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
Java 程序员 数据库连接
Java中的异常处理:从入门到精通
在Java编程的海洋中,异常处理是一艘不可或缺的救生艇。它不仅保护你的代码免受错误数据的侵袭,还能确保用户体验的平稳航行。本文将带你领略异常处理的风浪,让你学会如何在Java中捕捉、处理和预防异常,从而成为一名真正的Java航海家。