zoukankan      html  css  js  c++  java
  • SQLite 3.7.13的加密解密(六)—— 使用方法

    采用上一节的方法为SQLite添加了加密解密功能后,使用方法如下:

    1、 在调用sqlite3_open()函数打开数据库后,要调用sqlite3_key()函数为数据库设置密码;

    2、 如果数据库之前有密码,则调用sqlite3_key()函数设置正确密码才能正常工作;

    3、 如果一个数据库之前没有密码,且已经有数据,则不能再为其设置密码;

    4、 如果要修改密码,则需要在第一步操作后,调用sqlite3_rekey()函数设置新的密码;

    5、 设置了密码的SQLite数据库,无法使用第三方工具打开;

    具体使用的示例代码如下:

    #include <stdio.h>

    #include <stdlib.h>

    #include "sqlite3.h"

    #define  SQLITE3_STATIC

    extern int sqlite3_key(sqlite3 *db, const void *pKey, int nKey);

    static int _callback_exec(void * notused,int argc, char ** argv, char ** aszColName)

    {

        int i;

        for ( i=0; i<argc; i++ )

        {

            printf"%s = %s\r\n", aszColName[i], argv[i] == 0 ? "NUL" : argv[i] );

        }

        return 0;

    }

    int main(int argc, char * argv[])

    {

        const char * sSQL;

        char * pErrMsg = 0;

        int ret = 0;

        sqlite3 * db = 0;

        //创建数据库

        ret = sqlite3_open("d:\\encrypt.db", &db);

        //添加密码

        ret = sqlite3_key( db, "dcg", 3 );

        //在内存数据库中创建表

        sSQL = "create table class(name varchar(20), student);";

        sqlite3_exec( db, sSQL, _callback_exec, 0, &pErrMsg );

        //插入数据

        sSQL = "insert into class values('mem_52911', 'zhaoyun');";

        sqlite3_exec( db, sSQL, _callback_exec, 0, &pErrMsg );

        //取得数据并显示

        sSQL = "select * from class;";

        sqlite3_exec( db, sSQL, _callback_exec, 0, &pErrMsg );

        //关闭数据库

        sqlite3_close(db);

        db = 0;

        return 0;

    }

    本文出自 “rainman” 博客,请务必保留此出处http://lancelot.blog.51cto.com/393579/940816


  • 相关阅读:
    flash 显示对象的getRect()方法的问题
    John Maccarthy
    一个c++ 2d图形引擎 AGG
    lisp 编程入门
    linux图形开发工具
    wxDevC++ – Dev C++的愛好者一定要知道的C++ IDE
    备忘 html5 canvas context2d/3d
    windows下使用boost库可以下载编译好的二进制安装包
    酷壳
    [.NET] : Provider Pattern
  • 原文地址:https://www.cnblogs.com/iapp/p/3631760.html
Copyright © 2011-2022 走看看