嵌入式数据库 sqllite & h2 utils
使用场景:
简单脚本,但是有需要数据记录. (使用前升级下版本)
我的使用: 老机器,老项目,jkd6, 需要记录
SqlLiteUtils
package com.sea.edi.listener; import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /***************************
*<pre>
* @Project Name : edi-kafka-service
* @Package : com.icil.edi.listener
* @File Name : SqlLiteUtils
* @Author : Sea
* @Date : 12/14/22 3:53 PM
* @Purpose :
* @History :
*</pre>
* <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
* <dependency>
* <groupId>org.xerial</groupId>
* <artifactId>sqlite-jdbc</artifactId>
* <version>3.21.0</version>
* </dependency>
***************************/
public class SqlLiteUtils { static Connection connection = null; public static Connection getConnection() throws Exception {
if(connection==null||connection.isValid(15)){
synchronized (SqlLiteUtils.class){
if(connection==null||connection.isValid(15)){
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:FileCopy.db");
// connection = DriverManager.getConnection("jdbc:sqlite:/home/sealiu/FileCopy.db");
connection.setAutoCommit(true);}
}
}
return connection;
} /**
* insert update delete
* table tb_file_name : id fileName createTs
* @param sql
* @throws Exception
*/
public static void doUpdate(String sql){
try
{
Connection connection = getConnection();
Statement statement = connection.createStatement();
// statement.executeUpdate("CREATE TABLE IF NOT EXISTS tb_file_name (createTs integer, name string)");
// statement.executeUpdate("insert into tb_file_name values(System.currentTimeMillis(), 'Sea')");
statement.executeUpdate(sql);
}catch (Exception e)
{
e.printStackTrace();
System.err.println("exec sql "+ sql + "exp and exception: " + e);
} } public static List<Map> doQuery(String sql){
try
{
Connection connection = getConnection();
Statement statement = connection.createStatement();
statement.setQueryTimeout(30); // set timeout to 30 sec.
// ResultSet rs = statement.executeQuery("select * from person");
ResultSet rs = statement.executeQuery(sql);
List<Map> maps = convertList(rs);
return maps;
}catch (Exception e)
{
e.printStackTrace();
System.err.println("exec sql "+ sql + "exp and exception: " + e);
}
return null;
} // 将查询结果resultset转换为List<Map>
private static List<Map> convertList(ResultSet rs) throws SQLException{
List<Map> list = new ArrayList<Map>();
ResultSetMetaData md = rs.getMetaData();//获取键名
int columnCount = md.getColumnCount();//获取列的数量
while (rs.next()) {
Map<String,Object> rowData = new HashMap<String,Object>();//声明Map
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值
}
list.add(rowData);
}
return list;
} // @Test
public static void main(String[] args) throws Exception
{ // String schema= "CREATE TABLE IF NOT EXISTS tb_file_name (createTs Long, name string ,primary key(name))";
String schema= "CREATE TABLE IF NOT EXISTS tb_file_name (createTs Long, name string )";
String insertSql= "insert into tb_file_name values(3, 'Sea')";
String query= "select * from tb_file_name where createTs>2";
String delete= "DELETE FROM tb_file_name WHERE createTs=2 "; doUpdate(schema);
doUpdate(insertSql);
// doUpdate(delete);
List<Map> maps = doQuery(query);
System.err.println(maps);
} }
H2DbUtils:
package com.sea.edi.listener; import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /***************************
*<pre>
* @Project Name : edi-kafka-service
* @Package : com.sea.edi.listener
* @File Name : H2BDUtils
* @Author : Sea
* @Date : 12/15/22 3:31 PM
* @Purpose :
* @History :
* <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
* <dependency>
* <groupId>com.h2database</groupId>
* <artifactId>h2</artifactId>
* <version>1.4.187</version>
* </dependency>
*</pre>
***************************/
public class H2DBUtil { public static String DB_DIR = null;
static Connection connection = null;
public static Connection getConnection() throws Exception {
if(connection==null||connection.isValid(15)){
synchronized (H2DBUtil.class){
if(connection==null||connection.isValid(15)){
// 加载H2数据库驱动
Class.forName("org.h2.Driver");
//jdbc:h2:/tmp/tmp/h2DB
String JDBC_URL = DB_DIR!=null?("jdbc:h2:"+DB_DIR):"jdbc:h2:/tmp/h2DB";
// 根据连接URL,用户名,密码获取数据库连接
connection = DriverManager.getConnection(JDBC_URL, "root", "root");
connection.setAutoCommit(true);}
}
}
return connection;
} /**
* insert update delete
* @param sql
* @throws Exception
*/
public static void doUpdate(String sql){
try
{
Connection connection = getConnection();
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
}catch (Exception e)
{
e.printStackTrace();
System.err.println("exec sql "+ sql + "exp and exception: " + e);
} } public static List<Map> doQuery(String sql){
try
{
Connection connection = getConnection();
Statement statement = connection.createStatement();
statement.setQueryTimeout(30); // set timeout to 30 sec.
// ResultSet rs = statement.executeQuery("select * from person");
ResultSet rs = statement.executeQuery(sql);
List<Map> maps = convertList(rs);
return maps;
}catch (Exception e)
{
e.printStackTrace();
System.err.println("exec sql "+ sql + "exp and exception: " + e);
}
return null;
} // 将查询结果resultset转换为List<Map>
private static List<Map> convertList(ResultSet rs) throws SQLException{
List<Map> list = new ArrayList<Map>();
ResultSetMetaData md = rs.getMetaData();//获取键名
int columnCount = md.getColumnCount();//获取列的数量
while (rs.next()) {
Map<String,Object> rowData = new HashMap<String,Object>();//声明Map
for (int i = 1; i <= columnCount; i++) {
rowData.put((""+md.getColumnName(i)).toLowerCase(), rs.getObject(i));//获取键名及值
}
list.add(rowData);
}
return list;
} // @Test
public static void main(String[] args) throws Exception
{
// String schema="CREATE TABLE IF NOT EXISTS tb_file_name(name VARCHAR(70) PRIMARY KEY,name VARCHAR(100),sex VARCHAR(4))";
String schema="CREATE TABLE IF NOT EXISTS tb_file_name(name VARCHAR(70),cts BIGINT,times INT)";
String insertSql= "insert into tb_file_name values('Sea',312421412,3)";
String query= "select * from tb_file_name";
String delete= "DELETE FROM tb_file_name WHERE times=2 "; doUpdate(schema);
doUpdate(insertSql);
doUpdate(delete);
List<Map> maps = doQuery(query);
System.err.println(maps);
} }
嵌入式数据库 sqllite & h2 utils的更多相关文章
- Java嵌入式数据库H2学习总结(一)——H2数据库入门
一.H2数据库介绍 常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL.其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的 ...
- 在Spring中使用嵌入式数据库-H2
Spring3以后开始支持嵌入式数据库,嵌入式数据库目前在市面上有好多种,HSQL,DERBY,H2...今天就主要讲一下h2的使用 对于一个数据库产品来说,主要就是如何存储数据和读取数据了.所谓嵌入 ...
- sqlite嵌入式数据库C语言基本操作(1)
sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...
- 无需部署的轻量级数据库—SQLLite,使用Demo
当有程序需要保存轻量数据,而又烦躁序列化到本地的不便,轻量级数据库—SQLLite是一个很好的选择,只需引用System.Data.SQLite.DLL,无需部署数据库,便可像拥有数据库一样保存数据, ...
- lmdb简介——结合MVCC的B+树嵌入式数据库
lmdb简介 lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎.其主要特性有: 基于文件映射IO(mmap) 基于B+树的key-value接口 基于MVCC(Multi ...
- Java免费开源数据库、Java嵌入式数据库、Java内存数据库
Java免费开源数据库.Java嵌入式数据库.Java内存数据库 http://blog.csdn.net/leiyinsu/article/details/8597680
- SQLite/嵌入式数据库
SQLite/嵌入式数据库 的项目要么不使用数据库(一两个文配置文件就可以搞定),要么就会有很多的数据,用到 postgresql,操练sqlite的还没有.现在我有个自己的小测试例子,写个数据库对比 ...
- Saiku数据库迁移H2迁移到Mysql(二十二)
Saiku数据库迁移H2迁移到Mysql Saiku默认使用H2数据库来存储saiku的用户与角色信息,我们可以根据角色来做saiku的权限控制,然后将角色分配给用户 ,该用户就会有对应的约束了! 由 ...
- [Sqlite]-->嵌入式数据库事务理解以及实例操作
引子: 1. Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2,嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 SQLite 事务(Tran ...
- 数据持久化之嵌入式数据库 SQLite(三)
阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 SQLite 是 D. Richard Hipp 用 C 语言编写的开源 ...
随机推荐
- 杭电oj 蟠桃记
Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...
- jadx 定位方法
目录 链接参数定位 链接参数定位 通过搜索请求链接中的参数来定位函数位置,如下图所示,请求链接为 https://www.python-spider.com/api/app1,app1为链接标识,可以 ...
- How to find WWN and WWPN of HBA card in Linux
There are several ways to detect the WWN of a Fibre Channel (FC) HBA and their details in Linux/Unix ...
- Mac 卸载 Anaconda3
终端安装anaconda-clean conda install anaconda-clean 删除所有与 Anaconda 有关的文件与目录 anaconda-clean --yes 第 2 步中的 ...
- vue+antd实现PDF预览(后端返回的是文件流)
操作步骤: 第一步:下载包 npm install --save vue-pdf 第二步:导入组件 第三步:使用pdf标签进行展示,showUrl指的是访问路径 第四步:定义要用到的变量 第五步: ...
- Zabbix 监控服务介绍
Zabbix 监控服务介绍 目录 Zabbix 监控服务介绍 一.Zabbix 监控服务介绍 1.1.1 Zabbix 监控服务介绍 1.1.2 如何去做监控 1.13 硬件监控 1.1.4 系统监控 ...
- Alibaba Cloud Linux 3.2104 64位安装mydumper-0.9.1
1 下载 wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz tar -zxvf mydumpe ...
- Hbase操作与编程使用
1.任务: 列出HBase所有的表的相关信息,例如表名: 3. 编程完成以下指定功能(教材P92下): (1)createTable(String tableName, String[] fields ...
- K8S的基础概念
一.Kubernetes介绍 1.什么是Kubernetes? Kubernetes(通常称为K8s,K8s是将8个字母"ubernete"替换为"8"的缩写) ...
- 关于 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件 的处理
关于 npm run serve 之后 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件 一.安装node.js 去官网安装Node.js(地址:https:/ ...