SQLite总结
废话不多说:
优点,高并发读快速度读取超越所有主流大中型数据库
缺点,缺少同步机制,读写不能同时,且同时只能有一个写入线程
用途,硬盘式缓存
另附一SQLite工具类:
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.List;
import java.util.Map; public class SQLiteHelper { private static final String dbDriver = "org.sqlite.JDBC"; public static int createTable(String dbUrl, String sql) {
try {
if (sql == null || sql.trim().length() < 1)
return -1;
Class.forName(dbDriver); if (dbUrl.indexOf("jdbc:sqlite:") != 0) {
dbUrl = "jdbc:sqlite:" + dbUrl;
}
if (!dbUrl.endsWith(".db")) {
dbUrl = dbUrl + ".db";
} Connection con = DriverManager.getConnection(dbUrl);
con.setAutoCommit(true);
System.out.println(sql);
FileWriter wr = new FileWriter("create.sql", true);
wr.append(sql + "\n");
wr.close();
con.close();
return con.prepareStatement(sql).executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1;
} public static int excuteUpdate(String dbUrl, String sql, Object[]... params) {
try {
if (sql == null || sql.trim().length() < 1)
return -1;
Class.forName(dbDriver); if (dbUrl.indexOf("jdbc:sqlite:") != 0) {
dbUrl = "jdbc:sqlite:" + dbUrl;
}
if (!dbUrl.endsWith(".db")) {
dbUrl = dbUrl + ".db";
} Connection con = DriverManager.getConnection(dbUrl);
con.setAutoCommit(false); Object[] param = null;
PreparedStatement ps = con.prepareStatement(sql);
for (int i = 0; i < params.length;) {
if (params != null) {
param = params[i];
for (int j = 1; j <= param.length;) {
if (param[j - 1] == null) {
continue;
}
ps.setObject(j, param);
j++;
}
}
ps.addBatch();
i++;
} int num = ps.executeUpdate();
ps.clearBatch();
con.commit();
con.close();
return num;
} catch (Exception e) {
e.printStackTrace();
}
return -1;
} public static List<Map<String, Object>> readDb(String dbUrl, String sql, Object... param) {
try {
if (sql == null || sql.trim().length() < 1)
return null;
if (dbUrl.indexOf("jdbc:sqlite:") != 0) {
dbUrl = "jdbc:sqlite:" + dbUrl;
}
if (!dbUrl.endsWith(".db")) {
dbUrl = dbUrl + ".db";
}
Class.forName(dbDriver);
Connection con = DriverManager.getConnection(dbUrl);
PreparedStatement ps = con.prepareStatement(sql);
for (int j = 1; j <= param.length;) {
if (param[j - 1] == null) {
continue;
}
ps.setObject(j, param);
j++;
}
con.close();
return new ListResult(ps.executeQuery()).getListRestlt();
} catch (Exception e) {
e.printStackTrace();
}
return null;
} }
SQLite总结的更多相关文章
- 【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】
由于个人研究需要,需要采集天气历史数据,前一篇文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子),介绍了基本的采集思路和核心代码,经过1个星期的采集,历史数据库 ...
- UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?
选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...
- 深入解析Sqlite的完美替代者,android数据库新王者——Realm
写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心androi ...
- VS15 preview 5打开文件夹自动生成slnx.VC.db SQLite库疑惑?求解答
用VS15 preview 5打开文件夹(详情查看博客http://www.cnblogs.com/zsy/p/5962242.html中配置),文件夹下多一个slnx.VC.db文件,如下图: 本文 ...
- Android之SQLite数据存储
一.SQLite保存数据介绍 将数据库保存在数据库对于重复或者结构化数据(比如契约信息)而言是理想之选.SQL数据库的主要原则之一是架构:数据库如何组织正式声明.架构体现于用于创建数据库的SQL语句. ...
- 【教程】SQLite数据库修复
SQLite 大家都知道,就不多说了. 有时候数据量大了,或者存储过程中出现异常,数据库就可能会出问题. 这是以前公司产品出现过的问题,导致软件都打不开了,我花了不少时间才解决的,趁现在有空贡献出来. ...
- SQLite学习笔记(十)&&加密
随着移动互联网的发展,手机使用越来越广泛,sqlite作为手机端存储的一种解决方案,使用也非常普遍.但是sqlite本身安全特性却比较弱,比如不支持用户权限,只要能获取到数据库文件就能进行访问:另外也 ...
- mono for android中使用dapper或petapoco对sqlite进行数据操作
在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...
- 【腾讯Bugly干货分享】微信iOS SQLite源码优化实践
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b58022433221be01499480 作者:张三华 前言 随着微信iO ...
- 【腾讯Bugly干货分享】移动客户端中高效使用SQLite
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b57f2a0703f7d31b9a3932 作者:赵丰 导语 iOS 程序能 ...
随机推荐
- iMindMap 10 的使用体验 + 讯飞输入法 + windows防火墙 (完美)
这个软件 最终的效果非常好. 但是有一个硬bug,就是输入光标 搜狗输入法和百度输入法,输入法获取不到,导致输入中文的时候,文字候选框位置特别远. 如果是纯英文 输入使用,就没有这个bug. 总结: ...
- vscode 自动格式化 好使的配置 setting.json 20210622
一直用idea,今天有个需求得用vscode,发现格式化不好使了 用 vetur 格式化 结果带分行什么的,eslint 过去不了,更新了个好使的配置,记录一下. { "update.mod ...
- TLSR8258方案开发之BLE协议接口代码解析
一 前言 这里的代码是在原厂基础上修改了不少.虽然代码复杂了不少,但是逻辑也清晰了不少. 二 广播协议 想要熟悉并修改ble的广播协议和内容,请查阅结构体: static const attribu ...
- linux命令行下使用代理
有两种方法: 1.curl -x <proxy_ip>:<proxy_port> <real_website> 举例:curl -x 12.99.109.52:80 ...
- 云VR:虚拟现实专业化的下一步
传统的VR通常需要功能强大的计算机和其他高性能设备来提供良好的用户体验.但是,如果有一种方法可以从任何设备和任何地方处理VR内容呢?这就是云VR对VR用户的承诺.随着5G和其他网络的到来,VR技术的未 ...
- 除gRPC之外的另一个选择,IceRPC-支持QUIC
作者引言 自从19年开始接处到RPC,当时完全没有相关概念,接触到的都是http,tcp等,当时公司用的是zeroc出品的ice框架,对应rpc非常强大,跨平台,跨语言.可惜的国内并不是主流,主流是g ...
- C++ memcpy、memmove
函数原型: void *memcpy(void *dest, const void* src, size_t count ); void *memmove(void *dest, const void ...
- 原型&继承题目及内容解答
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 代码输出结果 function Person(name) { this.name = name } var p2 = new Per ...
- 探索华为云CCE敏捷版金融级高可用方案实践案例
本文分享自华为云社区<华为云CCE敏捷版金融级高可用方案实践>,作者: 云容器大未来. 一.背景 1.1. CCE 敏捷版介绍 云原生技术有利于各组织在公有云.私有云和混合云等新型动态环境 ...
- wordpress自建博客站,在页脚添加网站总访问次数
wordpress自建博客站,在页脚添加网站总访问次数 笔者使用的主题是 GeneratePress 版本:3.1.3 打开footer.php编辑 <div style="text- ...