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(); } } }
实现对数据库的操作 包括建表,新增数据,查询等操作;
以上,应该是入门了!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人