当前位置:  -> 首页 -> 原创文章 -> C++下使用加密版本SQLITE

上一篇 | 下一篇
C++下使用加密版本SQLITE
作者:洛羽叶  点击率:11185  发布时间:2012-12-19
SQLITE支持跨平台、跨语言,是做桌面产品比较合适的轻量级开源文件数据库,最新版本是3.7.15,下载位置:http://www.sqlite.org/sqlite-amalgamation-3071500.zip,非商业版本不提供加密功能,但有相应的第三方开源类库已经实现了加密功能。通常的方案是在C++下使用加密SQLITE库,.NET语言使用时进行封装,.NET下的SQLITE加密方式是不兼容的。
wxSQLite3除了封装SQLITE以外,还实现了一个SQLITE加密版本,wxSQLite3的最新版本是3.0.1,支持SQLITE 3.7.14.1。

首先下载wxSQLite3:http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/wxsqlite3-3.0.1.zip/download

压后获取wxsqlite3-3.0.1\sqlite3\secure\src下所有文件。

新建C++ SDK DLL工程SQLITE3,加入预处理:
    SQLITE_HAS_CODEC=
1
    CODEC_TYPE=CODEC_TYPE_AES128
    SQLITE_CORE
    THREADSAFE
    SQLITE_SECURE_DELETE
    SQLITE_SOUNDEX
    SQLITE_ENABLE_COLUMN_METADATA

只把sqlite3secure.c包含在工程中,不使用预编译头。

在sqlite3.c及sqlite3secure.c文件头部加入:

    
#ifndef SQLITE_API
    
#define SQLITE_API __declspec(dllexport)
    
#endif
    
    
#ifndef SQLITE_HAS_CODEC
    
#define SQLITE_HAS_CODEC
    
#endif
    
在sqlite3.h头部加入(根据使用方法不同,此步骤并非必要):
    
#ifndef SQLITE_API
    
#define SQLITE_API __declspec(dllimport)
    
#endif
    
    
#ifndef SQLITE_HAS_CODEC
    
#define SQLITE_HAS_CODEC
    
#endif

使用方引用sqlite3.h及sqlite3.lib
    
    
int result=0;
    sqlite3 *db=NULL;       
    
    result=sqlite3_open(
"c:\test.db",&db);     
    result=sqlite3_key(db,
"abcd",3); //使用密码,第一次为设置密码
    //result=sqlite3_rekey(db,NULL,0); //清空密码
    result=sqlite3_exec(db,"PRAGMA synchronous = OFF",0,0,0);    //提高性能
    result=sqlite3_exec(db,"PRAGMA cache_size = 8000",0,0,0); //加大缓存
    result=sqlite3_exec(db,"PRAGMA count_changes = 1",0,0,0); //返回改变记录数
    result=sqlite3_exec(db,"PRAGMA case_sensitive_like = 1",0,0,0); //支持中文LIKE查询
    
    result=sqlite3_exec(db,
"CREATE TABLE [MyTable] ([ID] INTEGER PRIMARY KEY NOT NULL,[MyText] TEXT NULL)",0,0,0);
    result=sqlite3_exec(db,
"INSERT INTO MyTable (MyText) VALUES ('测试!')",0,0,0);    
    
    result=sqlite3_close(db);

标签: C++ SQLITE sqlite3_key wxSQLite3
引用地址:本站原创
   站点首页      技术人生      旅途足迹      我要留言      友情链接      关于站长   
[本站统计]
在线人数:0
今日访问:893
总访问量:1468575
Copyright 2006-2022 EasyWeb 1.6 订阅 All Rights Reserved
粤ICP备08028977号-1
www.luoriver.com
Created by WWH in 2006