
Sqlite3
几百人在爱
这个作者很懒,什么都没留下…
展开
-
董淳光之SQLITE3 使用总结(5)
http://www.sqlite.com.cn/MySqlite/6/411.Html int sqlite3_key(sqlite3 *db, const void *pKey, int nKey) { return sqlite3_key_interop(db, pKey, nKey); } int sqlite3_rekey(sqlite3 *db, const转载 2012-10-29 18:03:09 · 1188 阅读 · 0 评论 -
Sqlite 3.7.14.1 xxtea 加密算法
http://blog.youkuaiyun.com/wzq9706/article/details/8133314 最近在研空Sqlite加密算法,东拼西凑,还没研究出AES怎么用,欢迎指正,交流 1.从官方下载最新版本的Sqlite目前 www.sqlite.org 是:如sqlite-amalgamation-3071401.zip 2.在VS中添加一个空项目 3.解压sqlite-原创 2012-10-31 16:55:59 · 3405 阅读 · 0 评论 -
SQLite 入门教程(三)好多约束 Constraints
原文:http://www.cnblogs.com/myqiao/archive/2011/07/13/2105550.html 一、约束 Constraints 在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应该翻译成约束更贴切一点。 那么什么是约束呢? 我们在数据库中存储数据的时候,有一些数据有明显的约束条件。 比如一所学校关于教师的数据表转载 2013-08-14 11:41:35 · 3917 阅读 · 0 评论 -
Sqlite判断字段存在
判断表存在的方法很简单,网上很多: SELECT COUNT(*) FROM sqlite_master where type='table' and name='%s'" % tname; 那么判断字段是否存在, 或者说如何判断表的版本是否最新就只需要: select * from sqlite_master where tbl_name='tblContactLis转载 2013-08-12 15:42:53 · 7332 阅读 · 0 评论 -
将XLS文件导成Sqlite数据库文件
使用的XLS解析库 BasicExcel 头文件: // 王智泉 #pragma once namespace YExcel { class BasicExcelWorksheet; } struct sqlite3; class XlsToSqlite { public: XlsToSqlite(void); virtual ~XlsToSqlite(void)原创 2012-07-30 13:59:55 · 2863 阅读 · 0 评论 -
SQLite 3.7.13的加密解密(七)—— 遗留问题
现象与原因 采用上面的方法对数据库进行加密,存在页面尺寸错乱的问题。在SQLite的DB文件中,第16、17两个字节的值表示数据库中每个页的大小,SQLite规定页大小必须是512的倍数,如果加密算法恰好导致这两个字节的值为512的倍数,且与数据库的实际页面大小不一样,就会导致不能进行数据库操作。 其原因是在sqlite3_open()函数中,会读取DB文件头,从16、17字节得到页大小,但是转载 2012-10-30 14:10:42 · 1189 阅读 · 0 评论 -
SQLite 3.7.13的加密解密(二)—— 开放宏定义
首先要在sqlite3.c中最前面,添加代码(网上有说在sqlite3.h中添加也可,实际测试在sqlite3.h中打开该宏是无效的): #ifndef SQLITE_HAS_CODEC #define SQLITE_HAS_CODEC #endif 这个宏是用来确定是否支持加密的。添加上述代码后编译,会出现如下错误: D:\Rese转载 2012-10-30 14:05:17 · 1653 阅读 · 0 评论 -
SQLite 3.7.13的加密解密(六)—— 使用方法
采用上一节的方法为SQLite添加了加密解密功能后,使用方法如下: 1、 在调用sqlite3_open()函数打开数据库后,要调用sqlite3_key()函数为数据库设置密码; 2、 如果数据库之前有密码,则调用sqlite3_key()函数设置正确密码才能正常工作; 3、 如果一个数据库之前没有密码,且已经有数据,则不能再为其设置密码; 4、 如果要修改密码,则需要在第一步操作后,调转载 2012-10-30 14:09:42 · 4805 阅读 · 0 评论 -
SQLite 3.7.13的加密解密(五)—— 修正编译错误和警告
上面的代码是从网上下载下来的,它使用的SQLite版本比较旧,因此在SQLite 3.7.13下编译不通过,下面需要对编译错误和警告逐一修正。 编译信息 原因与修改方法 'Pager' has no member named 'pCodecArg' 在3.7.13版本中,Pager的成员变量pCodecArg名称修改为pCodec,因此用到p转载 2012-10-30 14:07:37 · 1234 阅读 · 2 评论 -
SQLite 3.7.13的加密解密(四)—— 挂接加密解密函数
把crypt.c中实现的加密解密函数挂接到sqlite3.c中,并且实现前面编译提示的未实现的函数。在sqlite3.c的最后一行的后面,添加如下代码: #ifdef SQLITE_HAS_CODEC #include "crypt.h" /*** 加密结构 ***/ #define CRYPT_OFFSET 8 typedef struct _CryptB转载 2012-10-30 14:06:55 · 1117 阅读 · 0 评论 -
SQLite 3.7.13的加密解密(三)—— 创建加密解密函数
先不用管上面的编译错误,创建crypt.c和crypt.h,用来实现加密解密函数和相应接口的定义。 crypt.c里实现了加密解密函数,代码如下: #include "crypt.h" #include "memory.h" /*********** 关键加密函数 ***********/ int My_Encrypt_Func(unsigned char转载 2012-10-30 14:06:09 · 1242 阅读 · 1 评论 -
SQLite 3.7.13的加密解密(一)—— 前言
SQLite数据库支持加密和解密,但是免费版没有这个功能,不过网上已经有相关的资料,不过这些资料都不是基于SQLite 3.7.13版本的,这里根据网上找到的最全的资料进行整理,实现了SQLite 3.7.13版数据库的加密解密。本系列文章对此进行了详细说明。 开发环境: 操作系统 Win 7 IDE Eclipse Juno (4.2转载 2012-10-30 14:04:53 · 910 阅读 · 0 评论 -
Sqlite xxteacrypt.c代码
http://bbs.2ccc.com/topic.asp?topicid=337891 今天刚好改 风铃兄 的sqlite,随便说说,不对的请大家指正. sqlite3PagerSetCodec变化非常大 static void sqlite3PagerSetCodec( Pager *pPager, void *(*xCodec)(void*,void*,Pg转载 2012-10-30 10:55:54 · 1161 阅读 · 0 评论 -
SQLITE3 使用总结
http://www.sqlite.com.cn/MySqlite/6/407.Html 前序: 一、 版本 二、 基本编译 三、 SQLITE操作入门 (1) 基本流程 (2) SQL语句操作 (3) 操作二进制 (4) 事务处理 四、 给数据库加密 五、 后记 前序转载 2012-10-30 09:52:14 · 574 阅读 · 0 评论 -
SQLITE3 使用总结
2.语句操作 本节介绍如何用sqlite 执行标准 sql 语法。 i.1 执行sql语句 int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callback, void *, char **errmsg ); 这就是执行一条 sql 语句的函数。 第1个参数不再说了,是前面open函数得到的指针。说了是转载 2012-10-30 09:49:29 · 573 阅读 · 0 评论 -
董淳光之SQLITE3 使用总结(3)
http://www.sqlite.com.cn/MySqlite/6/409.Html 4.事务处理 sqlite 是支持事务处理的。如果你知道你要同步删除很多数据,不仿把它们做成一个统一的事务。 通常一次 sqlite3_exec 就是一次事务,如果你要删除1万条数据,sqlite就做了1万次:开始新事务->删除一条数据->提交事务->开始新事务->… 的过程。这个操作是很慢转载 2012-10-30 09:46:44 · 1064 阅读 · 0 评论 -
董淳光之SQLITE3 使用总结(4)
http://www.sqlite.com.cn/MySqlite/6/410.Html /*** 下面是编译时提示缺少的函数 ***/ /** 这个函数不需要做任何处理,获取密钥的部分在下面 DeriveKey 函数里实现 **/ void sqlite3CodecGetKey(sqlite3* db, int nDB, void** Key, int* nKey) { retu转载 2012-10-30 09:41:14 · 733 阅读 · 0 评论 -
为跨平台数据库引擎 SQLite 实现加密扩展《转》
SQLite 简介 SQLite 是非常优秀的跨平台数据库引擎。与最常见的需要服务进程的数据库引擎(如 MySQL )不同,SQLite 引擎不是独立的进程,而是与主程序编译在一起、并运行在同一个进程空间中的代码。数据的存取则是通过程序内直接调用其 API 实现的,整个数据库都在宿主主机上存储在一个单一的文件中。这些使得 SQLite 在读写效率、消耗总量、延迟时间和整体简单性上具有转载 2012-10-29 10:35:17 · 1024 阅读 · 0 评论