对SQLite数据库操作 操作db文件
描述:
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数据库就是一个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文件的更多相关文章
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
可以将dictionary.db文件复制到Eclipse Android工程中的res\raw目录中,如图1所示.所有在res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件.使 用 ...
- 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET
今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...
- IOS开发-UI学习-sqlite数据库的操作
IOS开发-UI学习-sqlite数据库的操作 sqlite是一个轻量级的数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了,而且它的处理速度比Mysql.PostgreSQL这 ...
- 使用iOS原生sqlite3框架对sqlite数据库进行操作
摘要: iOS中sqlite3框架可以很好的对sqlite数据库进行支持,通过面向对象的封装,可以更易于开发者使用. 使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言 sqlit ...
- 安卓平台SQLite数据库基础操作总结
最近学了一些安卓开发,在这里分享一下SQLite数据库的使用相关部分,我使用的工具为Android Studio,后台语言为java: 首先,需要创建一个数据库辅助类DataBaseHelper,用于 ...
- Android Studio 查看SQLite数据库存储位置及文件
前言: 之前开发的一个记账本APP,用的是SQLite数据库,会有一些网友问如何查看数据库,这篇博文对此进行一个说明. 操作: 1.通过DDMS(Dalvik Debug Monitor Servic ...
- SQLite数据库在多线程写锁文件的解决办法
参考了很多SQLITE数据库多线程的解决办法 我自己写了一个SQLITEHELPER 来解决这个问题 希望大家多多指教 调用的时候 SQLLiteDBHelper _SQLLiteDBHelper ...
- [转]html5 js 访问 sqlite 数据库的操作类
本文转自:http://blog.csdn.net/tsxw24/article/details/7613815 webkit 核心的浏览器提供了 3个 api接口,用于访问本地sqlite数据,但使 ...
- iOS sqlite大数据分段加载的实现,sqlite数据库的操作
数据库管理类(自己封装的,挺简单的) // // MyDataBaseManger.m // DB_Test // // Created by admin on 17/2/7. // Copy ...
随机推荐
- 连接GitHub的方法
连接到GitHub 首先在本地创建 ssh key: ssh-keygen -t rsa -C "your_email@youremail.com" 后面的 your_email@ ...
- 十一、dbms_random(随机数生成器)
1.概述 提供了内置的随机数生成器,可以用于快速生成随机数. 2.包的组成 1).initialize作用:用于初始化dbms_random包,必须提供随机数种子.语法:dbms_random.ini ...
- wget 认知及常用命令【转载】
https://www.cnblogs.com/lxz88/p/6278268.html https://www.cnblogs.com/cindy-cindy/p/6847502.html
- LINUX系统下PXE网络安装虚拟机
PXE(preboot execute environment),预启动执行环境.由于安装系统的时候,有时候是大批量的安装:这时使用磁盘或虚拟机进行单个安装,效率太差:所以我们开始使用PXE网络安装L ...
- cookie和session的区别与联系
http://www.cnblogs.com/s1nker/p/4876284.html 基本概念 对于许多人来说,都知道的是,cookie是存储在客户端的,可以用来放需要长期使用的内容,例如用户密码 ...
- Tornado 概述
Tornado 概述 1 基本概念 像其他web框架一样, tornado也包括了以下内容: 基本构成: a 路由系统 b 视图 获取请求数据 返回数据 c 模板语言 模板基本使用 自定义函数 利用组 ...
- Spring核心概念(二)
IOC/DI IOC(控制反转):对象(组件)的创建由代码中转移到外部容器(XML,注解) . DI(依赖注入):当类A需要使用类B时,那么我们需要为类A的属性赋值类B的对象. 这种现象我们称为依赖注 ...
- 每周荐书:机器学习、Java虚拟机、微信开发(评论送书)
每周荐书:机器学习.Java虚拟机.微信开发(评论送书) 感谢大家对每周荐书栏目的支持,先公布下上周中奖名单 年精心雕琢,难得的"理论 + 实战案例 + 趟坑经验"总结 从需求分析 ...
- Scala函数式编程——近半年的痛并快乐着
从9月初啃完那本让人痛不欲生却又欲罢不能的<七周七并发模型>,我差不多销声匿迹了整整4个月.这几个月里,除了忙着讨食,便是继续啃另一本"锯著"--<Scala函数 ...
- 从客户端中检测到有潜在危险的 Request.Form 值的问题的解决方法。
在controller控制器里面添加[ValidateInput(false)] [ValidateInput(false)] public ActionResult m ...