sqlite
文章平均质量分 78
逍oo遥
请多关照
展开
-
在Qt中使用SQLite数据库
SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt自带驱动)。用法1 准备引入SQL模块在Qt项目文件(.pro文件)中,加入SQL模块:QT += sql引用头文件在需要使用SQL的类定义中,引用相关头文件。例如:#include <QSqlDatabase>#include...原创 2018-05-19 13:57:17 · 356 阅读 · 0 评论 -
SQLite应用之实例代码
SQLite应用之实例代码目录一、获取表的Schema信息二、常规数据插入三、高效的批量数据插入四、数据查询一、获取表的Schema信息 1). 动态创建表。 2). 根据sqlite3提供的API,获取表字段的信息,如字段数量以及每个字段的类型。 3). 删除该表。 见以下代码及关键性注释:#include <sqlite3.h>#include <s...原创 2018-05-26 14:17:59 · 158 阅读 · 0 评论 -
SQLite剖析之事务处理技术
SQLite剖析之事务处理技术前言 事务处理是DBMS中最关键的技术,对SQLite也一样,它涉及到并发控制,以及故障恢复等等。在数据库中使用事务可以保证数据的统一和完整性,同时也可以提高效率。假设需要在一张表内一次插入20个人的名字才算是操作成功,那么在不使用事务的情况下,如果插入过程中出现异常或者在插入过程中出现一些其他数据库操作的话,就很有可能影响了操作的完整性。所以事务可以很好地解决这样...原创 2018-05-26 14:19:53 · 893 阅读 · 0 评论 -
关于SQLITE3的一些使用经验
首先用 .open filename 打开数据库 如图。这次SQLITE3 才有操作对象(注意数据库文件要放在相应的程序文件夹下才能打开,否则就会创建一个新的数据库),输入命令的时候注意区分大小写,命令结束要用分号表示。...原创 2018-05-16 09:37:23 · 197 阅读 · 0 评论 -
SQLite剖析之设计与概念
SQLite剖析之设计与概念1.API 由两部分组成: 核心API(core API)和扩展API(extension API)。 核心API的函数实现基本的数据库操作:连接数据库、处理SQL、遍历结果集。它也包括一些实用函数,比如:字符串转换、操作控制、调试和错误处理。 扩展API通过创建你自定义的SQL函数去扩展SQLite。1.1、SQLite Version 3的一些新特点(1)SQ...原创 2018-05-27 23:30:48 · 436 阅读 · 1 评论 -
SQLite剖析之存储模型
SQLite剖析之存储模型前言 SQLite作为嵌入式数据库,通常针对的应用的数据量相对于DBMS的数据量小。所以它的存储模型设计得非常简单,总的来说,SQLite把一个数据文件分成若干大小相等的页面,然后以B树的形式来组织这些页面。而对于大型的数据库管理系统,比如Oracle,或者DM ,存储模型要复杂得多。就拿Oracle来说吧,它对数据文件不仅从物理上进行分块,而且从逻辑上进行分段,盘区和...原创 2018-05-27 23:31:43 · 1101 阅读 · 1 评论 -
SQLite3源程序分析之虚拟机
SQLite3源程序分析之虚拟机前言 最早的虚拟机可追溯到IBM的VM/370,到上个世纪90年代,在计算机程序设计语言领域又出现一件革命性的事情——Java语言的出现,它与c++最大的不同在于它必须在Java虚拟机上运行。Java虚拟机掀起了虚拟机技术的热潮,随后,Microsoft也不甘落后,雄心勃勃的推出了.Net平台。首先将SQLite虚拟机与Java虚拟机作对比。1、概述 所谓虚拟机...原创 2018-05-27 23:33:15 · 474 阅读 · 0 评论 -
SQLite剖析之动态内存分配
SQLite剖析之动态内存分配 SQLite通过动态内存分配来获取各种对象(例如数据库连接和SQL预处理语句)所需内存、建立数据库文件的内存Cache、保存查询结果。1、特性 SQLite内核和它的内存分配子系统提供以下特性: (1)对内存分配失败的健壮处理。如果一个内存分配请求失败(即malloc()或realloc()返回NULL),SQLite将释放未关联的缓存页,然后重新...原创 2018-05-24 10:01:06 · 1076 阅读 · 0 评论 -
SQLite3源程序分析之查询处理及优化
SQLite3源程序分析之查询处理及优化前言 查询处理及优化是关系数据库得以流行的根本原因,也是关系数据库系统最核心的技术之一。SQLite的查询处理模块很精致,而且很容易移植到不支持SQL的存储引擎(Berkeley DB最新的版本已经将其完整的移植过来)。 查询处理一般来说,包括词法分析、语法分析、语义分析、生成执行计划以及执行计划几个部分。SQLite的词法分析器是手工写的(比较简单),...原创 2018-06-09 10:47:32 · 515 阅读 · 0 评论 -
SQLite剖析之编程接口详解
SQLite剖析之编程接口详解前言 使用过程根据函数大致分为如下几个过程:sqlite3_open()sqlite3_prepare()sqlite3_step()sqlite3_column()sqlite3_finalize()sqlite3_close() 这几个过程是概念上的说法,而不完全是程序运行的过程,如sqlite3_column()表示的是对查询获得一行里面的数据的列的各个操作...原创 2018-05-26 14:17:18 · 162 阅读 · 0 评论 -
SQLite剖析之异步IO模式、共享缓存模式和解锁通知
SQLite剖析之异步IO模式、共享缓存模式和解锁通知1、异步I/O模式 通常,当SQLite写一个数据库文件时,会等待,直到写操作完成,然后控制返回到调用程序。相比于CPU操作,写文件系统是非常耗时的,这是一个性能瓶颈。异步I/O后端是SQLite的一个扩展模块,允许SQLite使用一个独立的后台线程来执行所有的写请求。虽然这并不会减少整个系统的资源消耗(CPU、磁盘带宽等),但它允许SQ...原创 2018-05-26 14:16:34 · 820 阅读 · 0 评论 -
SQLite安装、编译与应用
SQLite安装、编译与应用什么是 SQLite SQLite是一款轻量级的、基于文件的嵌入式数据库,实现自包容、零配置、支持事务的SQL数据库引擎。与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。第一个Alpha版本诞生于2000年5月,直到今天已经成为最流行的嵌入式数据库,包括Goog...原创 2018-05-20 15:26:14 · 4321 阅读 · 0 评论 -
SQLite剖析之体系结构
SQLite剖析之体系结构1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite2.阅读SQLite Documentation中Technical/Design Documentation章节(根据所在层次阅读代码,对应章节描述进行理解。)应用层角度,从API(List Of SQLite Functions)角度切入,掌握API文档中所有参数的使用...原创 2018-05-20 15:27:28 · 2592 阅读 · 0 评论 -
SQLite剖析之内核研究
SQLite剖析之内核研究 先从全局的角度把握SQLite内核各个模块的设计和功能。SQLite采用了层次化、模块化的设计,而这些使得它的可扩展性和可移植性非常强。而且SQLite的架构与通用DBMS的结构差别不是很大,所以它对于理解通用DBMS具有重要意义。SQLite的内核总的来说分为三个部分,虚拟机(Virtual Machine)、Back-end(后端)和compiler(编译器)。1...原创 2018-05-21 10:28:17 · 273 阅读 · 0 评论 -
SQLite剖析之功能特性
SQLite剖析之功能特性 SQLite是遵守ACID的轻型数据库引擎,它包含在一个相对较小的C库中。它是D.RichardHipp创建的公有领域项目。不像常见的客户端/服务器结构范例,SQLite引擎不是一个与程序通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和...原创 2018-05-21 10:29:04 · 396 阅读 · 0 评论 -
SQLite剖析之C/C++接口
SQLite剖析之C/C++接口前言 SQLite3是SQLite一个全新的版本,它虽然是在SQLite2的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API。SQLite3是为了满足以下的需求而开发的:支持UTF-16编码、用户自定义的文本比较方法、可以对BLOBs字段建立索引。SQLite 3.X版的和SQLite 2.X版的API非常相似,但是有一些重要的改变需要注意。3...原创 2018-05-21 14:48:40 · 265 阅读 · 0 评论 -
SQLite剖析之数据类型
SQLite剖析之数据类型 许多SQL数据库引擎(除SQLite之外的各种SQL数据库引擎)使用静态、严格的数据类型。对于静态类型,一个值的数据类型由它的容器,即存储这个值的列来决定。SQLite则使用更加通用的动态类型系统。在SQLite中,一个值的数据类型被关联到这个值本身,而不是它的容器。SQLite的动态类型系统向后兼容一般静态类型系统的数据库引擎。在某种意义上,工作在静态类型数据库...原创 2018-05-22 11:36:08 · 529 阅读 · 0 评论 -
SQLite剖析之临时文件、内存数据库
SQLite剖析之临时文件、内存数据库一、7种临时文件 SQLite中,一个数据库由单个磁盘文件构成,简化了SQLite的使用,因为移动或备份数据库只要拷贝单个文件即可。这也使得SQLite适合用作应用程序文件格式。但是,当在单个文件中存储一个数据库时,SQLite会在处理数据库的过程中使用许多临时文件。 SQLite目前使用7种不同类型的临时文件: * 回滚日志(Rollbac...原创 2018-05-22 11:36:54 · 2952 阅读 · 0 评论 -
SQLite剖析之锁和并发
SQLite剖析之锁和并发控制 在SQLite中,锁和并发控制机制都是由pager.c模块负责处理的,用于实现ACID(Atomic、Consistent、Isolated和Durable)特性。在含有数据修改的事务中,该模块将确保所有的数据修改全部提交,或者全部回滚。与此同时,该模块还提供了一些磁盘文件的内存Cache功能。 事实上,pager模块并不关心数据库存储的细节,如B-Tr...原创 2018-05-22 11:40:07 · 1113 阅读 · 0 评论 -
SQLite3源程序分析之分析器的生成
SQLite3源程序分析之分析器的生成1、概述 Lemon是一个LALR(1)文法分析器生成工具,与bison和yacc类似,是一个可以独立于SQLite使用的开源的分析器生成工具。而且它使用与yacc(bison)不同的语法规则,可以减少编程时出现错误的机会。Lemon比yacc和bison更精致、更快,而且是可重入的,也是线程安全的——这对于支持多线程的程序是非常重要的。 Lemon的主要...原创 2018-06-09 10:48:25 · 534 阅读 · 0 评论