为QT中的sqlite数据库添加加密功能

来源:互联网 发布:城市天际线知乎 编辑:程序博客网 时间:2024/05/17 08:42

 sqlite数据库默认没有加密功能,对一些需要对工程文件进行保密的场合产生了不便,本文以QT4.4.3为例,
对qt源代码中的sql模块进行修改,为qt集成的sqlite数据库添加了加密功能.

1. /wxsqlite3_prj/sqlite3目录 下的文件进行编译生成 sqlite3.lib

2 将 sqlite3.h 和 上一步骤生成的sqlite3.lib 拷贝到目录 ?:/Qt/4.4.3/src/plugins/sqldrivers/sqlite 中.

3 将 ?:/Qt/4.4.3/src/plugins/sqldrivers/sqlite 目录下的sqlite.pro文件修改为:

   TARGET  = qsqlite
   
   # 不使用qt自带的sqilte源码文件,而是使用外部生成的库
   win32:LIBS += sqlite3.lib
   #
   
   HEADERS  = ../../../sql/drivers/sqlite/qsql_sqlite.h
   SOURCES  = smain.cpp /
       ../../../sql/drivers/sqlite/qsql_sqlite.cpp
   
   !system-sqlite:!contains( LIBS, .*sqlite.* ) {
       CONFIG(release, debug|release):DEFINES *= NDEBUG
       DEFINES += SQLITE_CORE SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE
   #    INCLUDEPATH += ../../../3rdparty/sqlite
   #    SOURCES += ../../../3rdparty/sqlite/sqlite3.c
   } else {
       LIBS *= $$QT_LFLAGS_SQLITE
       QMAKE_CXXFLAGS *= $$QT_CFLAGS_SQLITE
   }
   
   include(../qsqldriverbase.pri)
   
4 修改 ?:/Qt/4.4.3/src/sql/drivers/sqlite 目录下的文件 qsql_sqlite.cpp
 需要修改的函数 bool QSQLiteDriver::open(),函数体修改为:
 
  bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, const QString &, int, const QString &conOpts)
  {
      if (isOpen())
          close();
  
      if (db.isEmpty())
          return false;
  
      if (sqlite3_open16(db.constData(), &d->access) == SQLITE_OK) {
          sqlite3_busy_timeout(d->access, qGetSqliteTimeout(conOpts));
          setOpen(true);
          setOpenError(false);
         
        //添加加密功能  "Trucc"为加密密匙,5为密匙长度
     sqlite3_key( d->access, "Trucc", 5);
  
     return true;
      } else {
          setLastError(qMakeError(d->access, tr("Error opening database"),
                       QSqlError::ConnectionError));
          setOpenError(true);
          return false;
      }
   
  }

5 编译 ?:/Qt/4.4.3/src/plugins/sqldrivers/sqlite 下的工程, 在目录 ?:/Qt/4.4.3/plugins/sqldrivers 中生成添加加密功能的sqlite
  相应库文件.

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑分辨率调高了黑屏怎么办 电脑设置分辨率黑屏了怎么办 分辨率调高了黑屏怎么办 电脑调分辨率黑屏了怎么办 科沃斯cr120遥控器丢了怎么办 买了kl色的钻戒怎么办 qq旋风没有蓝钻怎么办 手机桌面短信图标不见了怎么办 手机桌面qq音乐图标不见了怎么办 电脑显示器图标变大了怎么办 手机卡信号好但是网络不好怎么办 陌陌功能被限制怎么办 陌陌设备封了怎么办 荣耀v8手机开机键不灵怎么办 联通积分换的腾讯会员怎么办 小米6手机变卡了怎么办 微信绑定银行卡次数太多怎么办 银行卡绑定太多微信了怎么办 怎样给qq设密码怎么办 吃了心悦胶囊上火怎么办 qq暂时被冻结了怎么办 部落群审核未通过怎么办 qq被限制解封该怎么办 微信提现成功但没到账怎么办 拍拍贷登录不上怎么办 京东店铺出租保证金怎么办 所选地区无货怎么办 闲鱼七天没发货怎么办 续贷密码忘了怎么办 微店商家不发货怎么办 微店商家不退钱怎么办 维修车辆被拍违章停车怎么办 网贷申请平台太多怎么办 所在城市没有网店怎么办信用卡 拍拍贷不放款了怎么办 拍拍贷账号注销了怎么办 我在拍拍贷注销了怎么办 快贷逾期一年了怎么办 广州车牌买新车旧车怎么办 高尔夫旅行款被锁在车内怎么办 英雄联盟误删文件怎么办