
sqlite
tobealv
这个作者很懒,什么都没留下…
展开
-
SQLite数据库rowid
由于rowid值会一直递增,如果达到所允许的最大值9223372036854775807后,它会自动搜索没有被使用的值,重新使用,并不会提示用户。所以,如果用户的数据库存在这种可能的情况,就应该使用AUTOINCREMENT定义主键,从而避免这种问题。使用AUTOINCREMENT设置自增主键,虽然也会遇到9223372036854775807问题,但是它会报错,提示用户,避免产生rowid所引发的问题。表中插入的第一个条记录的rowid为1,后续插入的记录的rowid依次递增1。原创 2022-10-26 08:52:16 · 1156 阅读 · 0 评论 -
sqlite嵌套删除
delete from table where id=(select min(id) from table);注意:必须带括号原创 2021-08-20 09:03:36 · 185 阅读 · 0 评论 -
sqlite判断空值
对于整型字段:sqlite3_column_bytes返回的是整数十进制的字面值字符串的长度,例如整型值123,返回的是3,如果字段值为空,sqlite3_column_bytes返回0(可以用此判断是否是空值),sqlite3_column_int也返回0....原创 2020-12-29 18:38:03 · 3130 阅读 · 1 评论 -
sqlite的prepare/step和busy/lock
1、sqlite3_prepare_v2 (1)用在写时,按sqlite文档的说法,如果开启了IMMEDIATE事务成功后,prepare操作是不会发生busy的,测试也确实未发生,但在写代码时出于周全考虑还是加上busy的处理。 (2)用在读时,测试表明,无论在prepare之前是否开启了事务(普通非IMMEDIATE),prepare操作可能会BUSY。从文档理解它只是编译,感觉是不含...原创 2020-04-15 11:30:26 · 947 阅读 · 0 评论 -
sqlite api错误处理
char *errmsg = NULL;if (sqlite3_exec(dbconn, sql, NULL, NULL, &errmsg) == SQLITE_OK){ return true;}else{ printf("%s->%s", sql, errmsg); sqlite3_free(errmsg); return false;}注意:如果...原创 2020-04-01 11:29:35 · 454 阅读 · 0 评论 -
sqlite的count
以此表为例:CREATE TABLE MyData ( PID INTEGER PRIMARY KEY, GUID INTEGER, DTime DATETIME, Value DOUBLE, Flag INTEGER);CREATE UNIQUE INDEX MyData_Time...原创 2020-03-20 16:08:57 · 4475 阅读 · 0 评论 -
max group by order by
select id,guid,max(dataTime) from Data where id > 100 group by guid order by dataTime desc;执行步骤:1、执行where条件,得到原始查询结果;2、执行group by,通过group by字段对原始结果进行分组,每个分组生成为一行;3、执行max,对每个分组各自执行聚合函数max,也是生成为...原创 2020-03-19 17:16:32 · 659 阅读 · 0 评论 -
提升SQLite数据插入效率低、速度慢的方法
前言SQLite数据库由于其简单、灵活、轻量、开源,已经被越来越多的被应用到中小型应用中。甚至有人说,SQLite完全可以用来取代C语言中的文件读写操作。因此我最近编写有关遥感数据处理的程序的时候,也将SQLite引入进来,以提高数据的结构化程度,并且提高大数据的处理能力(SQLite最高支持2PB大小的数据)。但是最开始,我发现,直接使用SQL语句的插入效率简直低的令人发指的。后来不断查转载 2016-11-19 09:50:48 · 559 阅读 · 0 评论 -
SQLITE的锁
在SQLite中,锁和事务是紧密联系的。为了有效地使用事务,需要了解一些关于如何加锁的知识。 SQLite采用粗放型的锁。当一个连接要写数据库,所有其它的连接被锁住,直到写连接结束了它的事务。SQLite有一个加锁表,来帮助不同的写数据库都能够在最后一刻再加锁,以保证最大的并发性。 SQLite使用锁逐步上升机制,为了写数据库,连接需要逐级地获得排它锁。SQLite有5个不同的锁状转载 2015-07-07 10:36:44 · 645 阅读 · 0 评论 -
SQLite在多线程环境下的应用
本文章来自网络------禚文一SQLite的FAQ里面已经专门说明,先贴出来。供以后像我目前的入门者学习。(7) 多个应用程序或者同一个应用程序的多个例程能同时存取同一个数据库文件吗?多进程可以同时打开同一个数据库,也可以同时 SELECT 。但只有一个进程可以立即改数据库。SQLite使用读/写锁定来控制数据库访问。(Win95/98/ME 操作系统缺乏转载 2015-04-15 16:44:10 · 2052 阅读 · 0 评论