对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 ...
随机推荐
- 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载
<?php /**构造方法__construct析构方法__destruct使用方法 PHP重写与重载 */ //构造方法:当实例化对象时,自动运行的方法 /*class channel{ fu ...
- Java进阶5 面向对象的陷阱
Java进阶5 面向对象的陷阱 20131103 Java是一门纯粹面向对象的编程语言,Java面向对象是基础,而且面向对象的基本语法非常多,非常的细,需要程序员经过长时间的学习才可以掌握.本章重点介 ...
- Java进阶3. 内存回收机制
Java进阶3. 内存回收机制 20131029 前言: 学过C++的都知道,C++中内存需要程序员自己维护.说道这里,很多开发的同学就感觉很痛苦,当他转向Java的时候,就会说你看Java多好啊,程 ...
- C# 设计模式巩固 - 单例模式
前言 设计模式的文章很多,所以此文章只是为了巩固一下自己的基础,说的不详细请见谅. 介绍 - 单例模式 官方定义:确保一个类只有一个实例,并提供一个全局访问点. 通俗定义:就是一个类只有一个单个实例. ...
- C#学习历程(四)[实际问题]
>>无法直接启动带有”类库输出类型”的项目 在编辑界面的右侧会出现[解决方案资源管理器],里面显示我们的程序项目和所有代码文件. 右键点击项目,在右键菜单中选择[属性] 一般导致该问题都是 ...
- iTabs Tab切换插件
最近项目中使用到Tab切换,切换的页面不变,内容发生变化,随手写了份简单的插件,附带源码.先看样子: 本人也考虑到是否使用jquery ui tab,但是还是热衷于自己写一份,首先好处之一是易于培训, ...
- ASP.NET后台怎么输出方法中间调试信息?
后台方法,不止是aspx.cs,而是页面调用的一些其它方法.想调试这些方法,我以前winform都是MessageBox.Show一些中间结果,现在我也想用这种方式.但想想,网页会触发 Message ...
- three.js入门系列之旋转的圆台、球体、正方体
先来张图: 一.调整机位和辅助线 由上述代码可知,现在的机位是三维坐标轴上的点(2,2,2),方框的那一句很重要,有了这一句,你将获得上帝视角!!! 接下来添加辅助线(立体空间三轴): 这样就添加了一 ...
- [AirFlow]AirFlow使用指南四 DAG Operator Task
1. DAG 在Airflow中,DAG或有向无环图是你运行所有任务的集合,以某种组织方式来反映所有任务之间的关系和依赖. 例如,一个简单的DAG可以包括三个任务:A,B和C.可以说A必须在B运行之前 ...
- nodejs——js 实现webSocket 兼容移动端
nodejs——js 实现webSocket 兼容移动端 //服务器端 //npm install --save ws const express = require('express'); cons ...