
[Database] SQLite
文章平均质量分 78
SQLite
阿卡基-马
业余马拉松选手
展开
-
[SQLite] Can multiple processes access a single database file at the same time?
embedded。原创 2023-08-02 21:18:28 · 431 阅读 · 0 评论 -
Sqlite之删除超过50条的数据
在应用中,总要对用户的一些操作进行记录,比如播放历史记录,搜索历史记录等,方便用户再次使用。但是这些记录又不能无限的存储,只需要记录最新的50条或者100条就可以了,所以要求应用每插入一条新数据之后,对超过50条的数据进行清理。 本文以搜索历史记录为例,主要介绍sqlite中limit ,offset关键字的使用,最后给出此复合语句的写法。建表 搜索历史记录只需要记录搜索关...转载 2019-12-07 15:31:31 · 2132 阅读 · 0 评论 -
【SQLite_4】SQLite 事务(Transaction)
事务(Transaction)是一个对数据库执行工作单元。事务(Transaction)是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。事务(Transaction)是指一个或多个更改数据库的扩展。例如,如果您正在创建一个记录或者更新一个记录或者从表中删除一个记录,那么您正在该表上执行事务。重要的是要控制事务以确保数据的完整性和处理数据库错误。实际上,...转载 2018-04-20 08:29:46 · 753 阅读 · 0 评论 -
【SQLite】sqlite3用法详解 demo
使用demo:点击打开链接使用的过程根据使用的函数大致分为如下几个过程:sqlite3_open()sqlite3_prepare()sqlite3_step()sqlite3_column()sqlite3_finalize()sqlite3_close()这几个过程是概念上的说法,而不完全是程序运行的过程,如sqlite3_column()表示的是对查询获得一行里面的数据的列的各个操作统称,实...原创 2018-04-16 17:28:37 · 7991 阅读 · 0 评论 -
sqlite3中绑定bind函数用法 (将变量插入到字段中)
参数绑定:和大多数关系型数据库一样,SQLite的SQL文本也支持变量绑定,以便减少SQL语句被动态解析的次数,从而提高数据查询和数据操作的效率。要完成该操作,我们需要使用SQLite提供的另外两个接口APIs,sqlite3_reset和sqlite3_bind。见如下示例:void test_parameter_binding() {//1. 不带参数绑定的情况下插入多条数据。char st...转载 2018-05-16 10:32:58 · 5189 阅读 · 0 评论 -
sqlite3中BLOB数据类型存储大对象运用示例
1:常用接口个人比较喜欢sqlite, 使用最方便,唯一的准备工作是下载250K的源;而且作者很热心,有问必答。以下演示一下使用sqlite的步骤,先创建一个数据库,然后查询其中的内容。2个重要结构体和5个主要函数:sqlite3 *pdb, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用...原创 2018-05-16 11:28:01 · 1696 阅读 · 1 评论 -
[转] sqlite3中BLOB数据类型存储大对象运用示例
1:常用接口个人比较喜欢sqlite, 使用最方便,唯一的准备工作是下载250K的源;而且作者很热心,有问必答。以下演示一下使用sqlite的步骤,先创建一个数据库,然后查询其中的内容。2个重要结构体和5个主要函数:sqlite3 *pdb, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用...原创 2018-07-02 10:26:26 · 2452 阅读 · 0 评论 -
sqlite3_column_blob()自己理解
原文地址:点击打开链接今天工作需要,读取了一下数据库中的blob数据,用的是sqlite3_column_blob(),首先说一下什么是blob:二进制大对象,是一个可以存储二进制文件的容器。一些大文件,如图片视频音频等,在数据库中就是用blob存储的。当我们取一个数据库中的数据时,如下图:这个数据库中保存data数据就是blob,其中的数据时图片,如下图:下图是图片的blob内容。今天做的blo...转载 2018-07-02 15:41:41 · 5257 阅读 · 0 评论 -
linux 下sqlite的 C编程之sqlite3_get_table
说明:通过sqlite3_get_table查询得到的结果,其结构是:第一行是列名,随后的行才是值。遍历的方式和二维数组相同。#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sqlite3.h>#include "test.h"int main(int argc, c...原创 2018-07-03 09:43:22 · 5956 阅读 · 0 评论 -
sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别
1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值...转载 2018-06-28 14:45:41 · 2548 阅读 · 0 评论 -
sqlite3中的数据类型(Datatypes In SQLite Version 3)
大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。Sqlite使用一个更一般的动态类型系统,sqlite中,值的数据类型跟值本身相关,而不是与它的容器相关。Sqlite的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时,sqlite中的动态类型允许它能做到一...翻译 2018-06-28 15:06:32 · 1541 阅读 · 0 评论 -
SQLite 事务
事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行,这被称为数据库完整性的原子性原则原创 2018-07-13 08:38:44 · 458 阅读 · 0 评论 -
SQL中的左连接与右连接,内连接有什么区别
例子,相信你一看就明白,不需要多说A表(a1,b1,c1) B表(a2,b2)左连接:select A.*,B.* from Aleft outer join B on(A.a1=B.a2)结果是:右连接:select A.*,B.* from Aright outer join B on(A.a1=B.a2)结果是:内连接:SELECT * FROM a, b where a.a1=b.a2,这...转载 2018-07-13 13:44:19 · 10417 阅读 · 3 评论 -
【SQLite_1】how database file locking works in SQLite version 3
This document was originally created in early 2004 when SQLite version 2 was still in widespread use and was written to introduce the new concepts of SQLite version 3 to readers who were already famil...原创 2018-04-20 08:19:17 · 382 阅读 · 0 评论 -
【SQLite_2】锁
在SQLite中,锁是一个重要而又基本的概念。 与锁密切相关的一个基本概念是事务。首先,为了更好的理解锁的概念,我们简单回顾一下什么是事务? 事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行,这被称为数据库完整性的原子性原则,关于事务的典型例子就是银行转帐。 事务由3个命令控制:begin、commit和rollback。begin之后和commit之前的所有...转载 2018-04-19 20:52:51 · 186 阅读 · 0 评论 -
【SQLite_3】sqlite_code
ch6 6.1.c#include <stdio.h>#include <sqlite3.h>int main(int argc, char **argv){ sqlite3 *db; char *zErr; int rc; char *sql; rc = sqlite3_open("test.db", &db); if(rc...原创 2018-04-19 17:11:01 · 240 阅读 · 0 评论 -
sqlite中的锁及概念误区
前言谈及sqlite,首先想到的必定是小巧便捷,尤其是嵌入式开发,相比较而言,对于sqlite的并发,大致都是这么说的(以下不代表个人观点)[plain] view plain copySQLite作为一款小型的嵌入式数据库,本身没有提供复杂的锁定机制,无法内部管理多路并发下的数据操作同步问题,更谈不上优化, 所以涉及到多路并发的情况,需要外部进行读写锁控制,否则SQLite会返回SQLITE_...转载 2018-03-31 21:50:16 · 1212 阅读 · 1 评论 -
SQLite的事务和锁
事务事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行。事务的典型实例是转帐。事务的范围 事务由3个命令控制:BEGIN、COMMIT和ROLLBACK。BEGIN开始一个事务,之后的所有操作都可以取消。COMMIT使BEGIN后的所有命令得到确认;而ROLLBACK还原BEGIN之后的所有操作。如: sqlite> BEGIN; sqlite> DELE...转载 2018-03-31 22:14:09 · 273 阅读 · 0 评论 -
SQLite 源码获取、编译与使用
一、引言最近想要写一个轻巧的桌面端软件,能够根据本地的一些数据进行查询。这个需求就涉及到了数据库的使用。通过查询资料,发现 SQLite 能够完美解决我的需求,所以这里开始了 SQLite 的学习。二、好书:SQLite权威指南(第二版)这篇博客并不是一个知识探索与总结的博客,而是为遇到同样问题的同学指出一条路的博客。这里,我通过自行阅读学习《SQLite权威指南(第二版)》的前两章节的内容,初步...转载 2018-04-04 10:45:40 · 1173 阅读 · 0 评论 -
sqlite 命令知识
root@ubuntu:/# sqlite3 --helpUsage: sqlite3 [OPTIONS] FILENAME [SQL]FILENAME is the name of an SQLite database. A new database is createdif the file does not previously exist.OPTIONS include: -appen...原创 2018-04-10 11:24:07 · 267 阅读 · 0 评论 -
sqlite3 C语言编程
sqlite数据库操作例程:[plain] view plain copy#include<stdio.h> #include<sqlite3.h> #include<string.h> int main() { sqlite3 *db; char *zErrMsg = 0; char sql[128]; //...转载 2018-04-16 13:07:35 · 1113 阅读 · 1 评论 -
linux 下sqlite的 C编程之sqlite3_get_table
说明:通过sqlite3_get_table查询得到的结果,其结构是:第一行是列名,随后的行才是值。遍历的方式和二维数组相同。#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sqlite3.h>#include "test.h"int main(int argc, c...转载 2018-04-16 15:03:16 · 909 阅读 · 0 评论 -
【SQLite_7】sqlite3_get_table()函数
{ sqlite3 *db; char *errmsg=NULL; //用来存储错误信息字符串 char ret=0; int my_age=0; //类型根据要提取的数据类型而定 char **dbResult; int nRow=0, nColumn=0; //nRow 查找出的总行数,nColumn 存储列 ret = sqlite3_op...转载 2018-04-16 21:59:43 · 2079 阅读 · 0 评论 -
【SQLite_6】SQLite 创建表
SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。语法CREATE TABLE 语句的基本语法如下:CREATE TABLE database_name.table_name( column1 datatype PRIMARY KEY(one or more columns), column2 da...转载 2018-04-17 08:34:01 · 432 阅读 · 0 评论 -
sqlite3 api sqlite3_busy_timeout 与 sqlite3_busy_handler 的使用与区别
在用多数据连接方式使用sqlite时,常常会遇到SQLITE_BUSY的错误,这是由于使用当前连接访问数据时,要申请相应级别的锁,而各个级别的锁有些是互斥的,当申请不到锁时就会返回这个错误。这时只要稍等片刻,等其它连接的操作处理完,释放了相斥的锁之后就可以取得锁并进行操作了。 但是sqlite3中并未对出现sqlite_busy后重试做默认的处理,而是提供了一种处理机制busy handle。有...原创 2018-04-22 09:11:32 · 3800 阅读 · 0 评论 -
【SQLite_5】CAPI3REF: Opening A New Database Connection
/*** CAPI3REF: Opening A New Database Connection** CONSTRUCTOR: sqlite3**** ^These routines open an SQLite database file as specified by the ** filename argument. ^The filename argument is interpreted...原创 2018-04-19 15:55:31 · 479 阅读 · 0 评论 -
sqlite3 database is locked 问题解决方案
sqlite3只支持一写多读.读与读可以同时进行读与写不可同时进行写与写不可同时进行解决方案1这个问题可以用线程间的同步方案来解决.同步方案的话有多种,但读写锁最适合这个问题.这个问题和读写锁不谋而合,所以可以用读写锁来解决这个问题.当然也可以用其他线程间同步方案来解决.针对读写锁,请参阅线程与读写锁解决方案2自己编写函数对当前数据库状态进行判断,并在状态为SQLITE_BUSY的时候...原创 2018-03-31 12:44:29 · 8905 阅读 · 1 评论