使用场景:

   简单脚本,但是有需要数据记录. (使用前升级下版本)

我的使用: 老机器,老项目,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的更多相关文章

  1. Java嵌入式数据库H2学习总结(一)——H2数据库入门

    一.H2数据库介绍 常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL.其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的 ...

  2. 在Spring中使用嵌入式数据库-H2

    Spring3以后开始支持嵌入式数据库,嵌入式数据库目前在市面上有好多种,HSQL,DERBY,H2...今天就主要讲一下h2的使用 对于一个数据库产品来说,主要就是如何存储数据和读取数据了.所谓嵌入 ...

  3. sqlite嵌入式数据库C语言基本操作(1)

    sqlite嵌入式数据库C语言基本操作(1) :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0, ...

  4. 无需部署的轻量级数据库—SQLLite,使用Demo

    当有程序需要保存轻量数据,而又烦躁序列化到本地的不便,轻量级数据库—SQLLite是一个很好的选择,只需引用System.Data.SQLite.DLL,无需部署数据库,便可像拥有数据库一样保存数据, ...

  5. lmdb简介——结合MVCC的B+树嵌入式数据库

    lmdb简介 lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎.其主要特性有: 基于文件映射IO(mmap) 基于B+树的key-value接口 基于MVCC(Multi ...

  6. Java免费开源数据库、Java嵌入式数据库、Java内存数据库

    Java免费开源数据库.Java嵌入式数据库.Java内存数据库 http://blog.csdn.net/leiyinsu/article/details/8597680

  7. SQLite/嵌入式数据库

    SQLite/嵌入式数据库 的项目要么不使用数据库(一两个文配置文件就可以搞定),要么就会有很多的数据,用到 postgresql,操练sqlite的还没有.现在我有个自己的小测试例子,写个数据库对比 ...

  8. Saiku数据库迁移H2迁移到Mysql(二十二)

    Saiku数据库迁移H2迁移到Mysql Saiku默认使用H2数据库来存储saiku的用户与角色信息,我们可以根据角色来做saiku的权限控制,然后将角色分配给用户 ,该用户就会有对应的约束了! 由 ...

  9. [Sqlite]--&gt;嵌入式数据库事务理解以及实例操作

    引子: 1. Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2,嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 SQLite 事务(Tran ...

  10. 数据持久化之嵌入式数据库 SQLite(三)

    阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680 SQLite 是 D. Richard Hipp 用 C 语言编写的开源 ...

随机推荐

  1. c++内存分配函数

    c语言中: 动态分配内存: malloc()函数; 释放内存: free()函数; c++中: 上述函数仍然可以使用; 动态分配内存: new关键字; 释放内存: delete关键字; int *p ...

  2. Dapper.FastCRUD与Dapper中的CustomPropertyTypeMap冲突

    在使用Dapper.NET时,由于生成的实体的属性与数据库表字段不同(如表字段叫USER_NAME,生成的对应的实体属性则为UserName). 这时需要使用Dapper中的CustomPropert ...

  3. QPushButton CSS样式

    QPushButton:!hover { color:white; font: 20pt "楷体"; border-radius:10px; border:1px solid rg ...

  4. 杭电oj 水仙花数

    Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:"水仙花数"是指一个三位数,它的各位数字的立方和等于其本身 ...

  5. [mysql练习]多行结果合并问题练习

    有一个scores表,表结构和数据如下: id, stu_id, name,course, grade 1,1,贾万, 语文, 902,1,贾万 ,数学 ,100 3,2,毛之远 ,语文 ,974,2 ...

  6. MacOS如何使用语音输入

    Siri是Apple旗下强大的语音助手,而Siri的语音输入是必不可少的的存在.目前的MacOS中都有语音听写功能,可以让它把我们的语音转化成为文字.如果你此时不想打字,或是不方便打字的情况下,这个功 ...

  7. 039_External Data Source(转载)

    场景描述:很多时候在实际开发中都会遇到很多数据集成问题,如Salesforce和SAP同步数据.为了让类似问题能方便.快速地解决,Salesforce提供了"外部数据源"这样的工具 ...

  8. Study python_01

    Python历史事件 1989 年 --- 荷兰人吉多·范罗苏姆决心开发一个新的脚本解释程序: 1991 年 --- 第一个用C语言实现的Python编译器诞生,Python 的代码对外公布,版本为 ...

  9. cin和缓存区问题

    稍微记录一下今天刷题遇到的C++问题 看到使用while(cin >> s);来读取最后一个字符串.百度了一下发现cin以空格,制表符和回车为终止依据.也就是说我输入"abc 1 ...

  10. Python openpyxl【包】

    介绍 Excel是我们日常工作中经常用到的办公软件,在处理数据和表格方面有着优异的性能,那么能不能用python来操作Excel呢? 答案是肯定的,openpyxl是一个第三方库,可以处理xlsx格式 ...