描述:

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。

它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,

可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,

同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2019年已经有19个年头,SQLite也迎来了一个版本 SQLite 3已经发布

工作原理

不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
 

功能特性

1. ACID事务 
2. 零配置 – 无需安装和管理配置
3.储存在单一磁盘文件中的一个完整的数据库
4.数据库文件可以在不同字节顺序的机器间自由的共享
5.支持数据库大小至2TB
6. 足够小, 大致13万行C代码, 4.43M
7. 比一些流行的数据库在大部分普通数据库操作要快
8. 简单, 轻松的API
9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
11. 独立: 没有额外依赖
12. 源码完全的开源, 你可以用于任何用途, 包括出售它
13. 支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等

sqlite数据库就是一个DB文件。 程序上的每次操作也是直接操作 DB文件。

程序每操作一次数据库都要IO一次 .DB  文件 。  这个文件就是这个SQLite数据库。

对大数据量以及复杂的关联关系 支持明显不足。

工具类:

package com.hotent.code.util.eayun;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement; /**
* 对sqlite操作
* 所需支持依赖 sqlite-jdbc-3.8.11.1.jar
* @author sunzhenyang on 2019-04-18
*
*
* 注:以下所有方法不能抛异常只能捕获 不然会报错
*/
public class SqliteJDBCUtil { private static String dbFilePath=""; public static String getDbFilePath() {
return dbFilePath;
} /**
* 生成一个DB文件 (创建连接)
* @param filePath 生成文件夹的路径 如:F:/fileTest/aabb.db
* @return 当前DB文件的连接通道
*/
public static Connection createRssDBFile(String filePath) {
SqliteJDBCUtil.dbFilePath = filePath;
Connection con=null; try {
Class.forName("org.sqlite.JDBC");
//创建了一个sqlite的 .db文件
con = DriverManager.getConnection("jdbc:sqlite:"+filePath);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} return con;
} /**
* 创建表
* @param con 某一个DB文件的连接
* @param createTableSql 创建表的语句
* @param tableName 表名 建表时判断表是否存在 存在即删除表 (可以不传)
* @throws SQLException
*/
public static void createTable(Connection con,String createTableSql,String tableName){
try {
Statement stat = con.createStatement();
if(tableName != null && !"".equals(tableName)){
stat.executeUpdate("drop table if exists "+tableName+";");
}
//创建表
stat.executeUpdate(createTableSql);
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 执行SQL 外部调用是直接设置SQL语句 以及参数 传入后直接执行
* @throws SQLException
*/
public static void editSql(PreparedStatement prep,Connection con){
//执行处理
try {
prep.addBatch();
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 执行SQL
* @throws SQLException
*/
public static PreparedStatement editSql(Connection con){
PreparedStatement prep=null;
//向rssType表中插入数据
try {
prep = con.prepareStatement("insert into tableTest values (?, ?, ?, ?);");
prep.setInt(1,1);
prep.setString(2,"qqq");
prep.setInt(3,2);
prep.setString(4,"11123"); prep.addBatch();
} catch (SQLException e) {
e.printStackTrace();
} return prep;
} /**
* 提交SQL语句
* @param con
* @param prep
* @throws SQLException
*/
public static void submitSql(Connection con,PreparedStatement prep){
/**
* 默认的话为自动提交, 每执行一个update ,delete或者insert的时候都会自动提交到数据库,无法回滚事务。
* 设置connection.setautocommit(false);
* 只有程序调用connection.commit()的时候才会将先前执行的语句一起提交到数据库,这样就实现了数据库的事务。
* 还有一点是因为sqllite数据库是一个 .db的文件 没执行一次语句都要打开一次文件 所以加入事务将全部SQL放于缓存中一次性执行 只需要打开一次文件
*/
try {
con.setAutoCommit(false);
prep.executeBatch(); //批量执行
con.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 使用完一定要关闭连接 ***** 务必 切记 *****
* @param prep
* @param con
*/
public static void close(PreparedStatement prep,Connection con){
try {
if(prep!=null)
prep.close(); if(con!=null)
con.close(); } catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) throws Exception {
Connection con = SqliteJDBCUtil.createRssDBFile("F:/fileTest/demo.db"); //1,创建一个DB文件 StringBuffer createTableSql=new StringBuffer("create table tableTest (");
createTableSql.append("id INTEGER, name NTEXT,");
createTableSql.append("typeId INTEGER, logoUrl text");
createTableSql.append(");");
SqliteJDBCUtil.createTable(con, createTableSql.toString(), "tableTest"); //2,创建一个表 PreparedStatement prep = SqliteJDBCUtil.editSql(con); //3, 向表中插入SQL SqliteJDBCUtil.submitSql(con, prep); //提交 SqliteJDBCUtil.close(prep, con); } }

对SQLite数据库操作 操作db文件的更多相关文章

  1. 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布

      可以将dictionary.db文件复制到Eclipse Android工程中的res\raw目录中,如图1所示.所有在res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件.使 用 ...

  2. 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...

  3. 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET

    今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...

  4. IOS开发-UI学习-sqlite数据库的操作

    IOS开发-UI学习-sqlite数据库的操作 sqlite是一个轻量级的数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了,而且它的处理速度比Mysql.PostgreSQL这 ...

  5. 使用iOS原生sqlite3框架对sqlite数据库进行操作

    摘要: iOS中sqlite3框架可以很好的对sqlite数据库进行支持,通过面向对象的封装,可以更易于开发者使用. 使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言 sqlit ...

  6. 安卓平台SQLite数据库基础操作总结

    最近学了一些安卓开发,在这里分享一下SQLite数据库的使用相关部分,我使用的工具为Android Studio,后台语言为java: 首先,需要创建一个数据库辅助类DataBaseHelper,用于 ...

  7. Android Studio 查看SQLite数据库存储位置及文件

    前言: 之前开发的一个记账本APP,用的是SQLite数据库,会有一些网友问如何查看数据库,这篇博文对此进行一个说明. 操作: 1.通过DDMS(Dalvik Debug Monitor Servic ...

  8. SQLite数据库在多线程写锁文件的解决办法

    参考了很多SQLITE数据库多线程的解决办法 我自己写了一个SQLITEHELPER 来解决这个问题 希望大家多多指教 调用的时候  SQLLiteDBHelper _SQLLiteDBHelper ...

  9. [转]html5 js 访问 sqlite 数据库的操作类

    本文转自:http://blog.csdn.net/tsxw24/article/details/7613815 webkit 核心的浏览器提供了 3个 api接口,用于访问本地sqlite数据,但使 ...

  10. iOS sqlite大数据分段加载的实现,sqlite数据库的操作

    数据库管理类(自己封装的,挺简单的) // //  MyDataBaseManger.m //  DB_Test // //  Created by admin on 17/2/7. //  Copy ...

随机推荐

  1. datagrid与DropDownList关联使用

    最近做一个页面需要用到这个两个控件,之前虽然看过,但是没有动手实践过.突然要做这么一个页面,并用上,真的有点着急.于是乎,网上疯狂找datagrid与DropDownList 的例子,找了很多很多,看 ...

  2. 迁移到阿里云后,NTKO控件报存word 报文件存取错误,请检查网络传输。

    解决办法:安装如下组件即可!

  3. eclipse集群tomcat

    eclipse集群tomcat 1.  File -> new -> other 选择server. 2.  选择Apache下边对应的tomcat版本,配置tomcat名称即可.由于我本 ...

  4. 使用 create-react-app 构建 react应用程序

    原文 http://blog.csdn.net/github_squad/article/details/57452333#

  5. Lua的清屏快捷方式

    1. Lua (Command Line) 这里清屏的方式是: os.execute("cls") 就是执行了DOS中的清屏命令! 2.SciTE中的清屏方式: -----(1)第 ...

  6. React之前端路由

    通过之前的博客介绍,对于react,我们已经可以写单个组件.复合组件/单个页面了,接下来就是实现页面的跳转了,这个时候,我们就需要前端路由了. 一.react-router-dom 安装这个依赖,th ...

  7. Android程序员学WEB前端(4)-HTML(4)-注册页面-Sublime

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76576031 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 注册页面1: <! ...

  8. MPAndroidChart Wiki(译文)~Part 5

    19. ChartData子类 这篇wiki主要关注ChartData子类的具体介绍.至于此部分没有提及到的ChartData的子类,代表他们没有特性功能需要介绍. BarData 方法 使用 set ...

  9. asp.net Npoi 使用

    HSSFWorkbook hssfworkbook = new HSSFWorkbook(); //增加 ExcelNPOI.SS.UserModel.ISheet SheetName = hssfw ...

  10. axios如何使用

    我们知道,vue2.0以后,vue就不再对vue-resource进行更新,而是推荐axios,而大型项目都会使用 Vuex 来管理数据,所以这篇博客将结合两者来发送请求 1.安装axios cnpm ...