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();
}
} }
实现对数据库的操作 包括建表,新增数据,查询等操作;
以上,应该是入门了!
JAVA内嵌数据库H2的使用入门的更多相关文章
- H2内嵌数据库的使用
H2内嵌数据库的使用 H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制. 同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容. H2还提供兼容模式,可以兼容一些主流 ...
- SpringBoot内嵌数据库的使用(H2)
配置数据源(DataSource) Java的javax.sql.DataSource接口提供了一个标准的使用数据库连接的方法. 传统做法是, 一个DataSource使用一个URL以及相应的证书去构 ...
- 补习系列(17)-springboot mongodb 内嵌数据库
目录 简介 一.使用 flapdoodle.embed.mongo A. 引入依赖 B. 准备测试类 C. 完善配置 D. 启动测试 细节 二.使用Fongo A. 引入框架 B. 准备测试类 C.业 ...
- 补习系列(17)-springboot mongodb 内嵌数据库【华为云技术分享】
目录 简介 一.使用 flapdoodle.embed.mongo A. 引入依赖 B. 准备测试类 C. 完善配置 D. 启动测试 细节 二.使用Fongo A. 引入框架 B. 准备测试类 C.业 ...
- swt java 内嵌ActiveX控件
这里用的是SWT/JFace开发application中SWT自带的org.eclipse.swt.ole.win32 包可以支持内嵌OLE和ActiveX. 具体用法如下: //创建一个OleFra ...
- AgileBoot - 如何集成内置数据库H2和内置Redis
本项目地址: github: https://github.com/valarchie/AgileBoot-Back-End gitee: https://gitee.com/valarchie/Ag ...
- H2内嵌数据库使用步骤
1.找到h2数据库的jar包 D:\repositories\com\h2database\h2\1.4.187\h2-1.4.187.jar 2.双击jar包,配置连接信息 Driver Class ...
- SpringBoot使用H2内嵌数据库
1.驱动 我们知道,JDBC是JDK自带的接口规范,不同的数据库有不同的实现,只需要引入相应的驱动包即可. 在使用MySQL数据库时,引入的是MySQL驱动,相应的,使用H2数据库时,也需要引入H2驱 ...
- h2内嵌数据库使用
参考文档 1 https://www.cnblogs.com/xdp-gacl/p/4171024.html 参考文档 2 https://blog.csdn.net/mafan121/article ...
随机推荐
- 不错的flash,动漫,小插件小集
(来源:http://abowman.com/google-modules/) embed code <object width="220" height="166 ...
- php中的curl使用入门教程和常见用法实例
摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...
- 详细说说 Google Test Certified 的各级——Level 2,3
转载请联系作者,谢谢! No releases with red tests基于Level1搭建的持续集成,持续发布选用的CL(changelist)就可以取自CI系统最后跑通的CL,因为持续集成 ...
- AC小笔记
1:基本库函数的使用 Rand()函数,可以产生0~32767之间的随机数. a+rand()%(b-a) 可以得到 [a,b] 之间的随机数. 2:基本数据类型的使用 可以使用强制类型转换 例如: ...
- Unity热门插件推荐
前言 Unite2015的笔记 ,本文所提到的扩展主要针对 mobile上使用. 文中资源在Asset Store描述的截图日期:2016-04-28 Mesh Baker https://www.a ...
- String的高级用法(String.Format)
string.Format C#的String.Format的一般地我们可以直接使用string.format()或int.ToString()和float.ToString() 下面是一些Strin ...
- linux下内网端口转发工具:linux版lcx [实现远程内网维护]
这个工具以前使用的初衷是内网渗透,需要将内网ssh端口转发到外网服务器上.但这个工具同样适用于运维工程师进行远程内网维护. 当然这一切的前提是内网可以访问外网,检测方法当然就是直接ping 一个外网I ...
- luogu2038[NOIP2014 T4]无线网络发射器选址
题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...
- javascript特效——烟花燃放的效果[xyytit]
春节临近,要做活动促销专题页面,百度了下,找到一些烟花燃放的特效,整理并添加了修改烟花各种参数的注释,便于大家修改使用,版权归原作者所有. 1. 示例效果:点击这里 下载源码:点击这里 2. Ht ...
- DBA应用技巧:如何升级InnoDB Plugin
DBA应用技巧:如何升级InnoDB Plugin 2011-03-23 10:09 康凯 ITPUB 字号:T | T 本文中,我们将向读者详细介绍如何升级动态InnoDB Plugin和升级静态编 ...