嵌入式数据库 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 语言编写的开源 ...
随机推荐
- misc1 ---攻防世界
题目: 应该是一串16进制的字符串: 但得到的是一堆乱码,于是查阅发现是偏移了128 str="d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a ...
- QTableWidget设置表头标题不成功
上网查说是由于在设置标题之前没有设置列数,但是我的是设置了列数的,最后发现是由于我在设置数据的时候把标题删除了,清除QTableWidget的方法有两种,clear()和clearContents() ...
- elementUi - 页面设计规范
elementUi - 页面设计规范 参考资料 element 字体 Font-family 代码 font-family: "Helvetica Neue",Helvetica, ...
- EOVS 83开局
目录 公司筹备阶段 第一季 公司筹备阶段 第一季
- Telerik——GridView总结(Winform)
在使用Telerik控件时有很多的方法,属性经常被用到,分享在此总结也便于查看复习. 1.基本属性 GridViewTextBoxColumn col = new GridViewTextBoxCol ...
- idea常用快捷键记录
实用编写代码辅助快捷键 Ctrl+Alt+V 提出选中内容为局部变量 Ctrl+Backspace 按单词删除 Ctrl+D 复制行 Ctrl+Y 删除当前行 Ctr+Shift+U 大小写转化 Sh ...
- C语言II一作业02
1.作业头 | 这个作业属于哪个课程 | < https://edu.cnblogs.com/campus/zswxy/SE2020-3> | | ---- | ---- | ---- | ...
- python+scrcpy实现将安卓设备录屏并保存到pc本地
一)scrcpy下载及安装 参考链接:https://zhuanlan.zhihu.com/p/80264357 二)python+scrcpy实现将安卓设备录屏并保存到pc本地 示例代码: impo ...
- js中的call()、apply()、bind()方法
var a= { name:"李四", age: "五岁", text: function() { return this.name+ " " ...
- openSUSE 15.4 安装 Deepin Wine QQ
1. 准备: deepin-wine5 deepin-wine-qq deepin-wine-helper 这三个包我是在openSUSE网站上搜索到的,https://software.opensu ...