易截截图软件、单文件、免安装、纯绿色、仅160KB

sqlite想到一些事2

sqlite是不错的内存数据库,内存数据库是处理大量并发数据的优先选择。但有些大量数据的并发并不是数据处理本身的问题,例如逻辑上必须有先后次序的数据是并发速度不能解决的问题。抛开这些问题一个简单大容量的解决方案是用一个内存数据库做前端一个硬盘数据库做后端,内存数据库定期把数据同步到后端的硬盘数据库。这个方案有个问题就是如何同步,同步分为两种一种是更新合并,一种是直接复制。更新合并是指把更改过的数据提交到后端数据库进行合并,直接复制指无论是否更改都把整个数据库的数据同步过来。处理这两种方式的办法是不同的,更新合并可以记录更改数据的指令简单的可以记录更改的表,复杂的可以记录更改的列甚至项。第一种方式只要简单的匹配sql指令后一种方式需要模拟运行。在某一时间点上把更改过的表更新到备份数据库上。直接复制就是无论表项是否更改都更新到备份数据库。sqlite有个看起来是个问题的问题,就是不能线程安全的插入和更新。这个问题sqlite在linux系统上解决的是满好的使用的是硬盘分区的锁可以和sqlite页缓冲系统完美的结合在一起。不过要是拿sqlite当内存数据库脱离硬盘的文件系统恐怕就要自己想办法解决多线程问题。才用软件锁解决线程安全是一个伪命题。用一个软件标示锁住库或表或表项,都会存在一个问题。无论锁在哪访问数据都变成了,询问锁再读取数据的两个步骤。极端的情况下对一个数据的访问由原来的一次操作变成了两次操作查询和插入。如果查询不成功那么要对插入指令排序,这个指令的排序当然要先进先出而不能是争用的。sqlite内存数据库很迷人最大的优点是平衡的读取和写入的在硬盘数据库上的差距。


相关文档:

C#与Sqlite数据库操作实例

这是一个有关分页的实例,仅供参考(代码来自网络)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;
using System.Threading;
using System.Collections;
us ......

[收拢] 用sqlite 执行标准 sql 语法

http://www.umgr.com/blog/PostView.aspx?bpId=36294
 1. 执行sql语句
int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callbacksql 语法
, void *,  char **errmsg );
这就是执行一条 sql 语句的函数。
第1个参数不再说了,是前面open函数得到的指针。说了是关键数据结构。
第2个参数const char ......

sqlite常见问题

 (1) 如何建立自动增长字段?
简短回答:声明为 INTEGER PRIMARY KEY 的列将会自动增长。
长一点的答案: 如果你声明表的一列为 INTEGER PRIMARY KEY,那么, 每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数,如果表是空的, 将会是1。 (如果是最大可能的主键 9223372036854775807 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号