解決QT 中Sqlite數(shù)據(jù)庫(kù)添加加密功能
解決QT 中Sqlite數(shù)據(jù)庫(kù)添加加密功能 是本文要介紹的內(nèi)容,Sqlite數(shù)據(jù)庫(kù)默認(rèn)沒(méi)有加密功能,對(duì)一些需要對(duì)工程文件進(jìn)行保密的場(chǎng)合產(chǎn)生了不便,本文以QT4.4.3為例,對(duì)QT 源代碼中的sql模塊進(jìn)行修改,為qt集成的sqlite數(shù)據(jù)庫(kù)添加了加密功能.
1、 /wxsqlite3_prj/sqlite3目錄 下的文件進(jìn)行編譯生成 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源碼文件,而是使用外部生成的庫(kù)
 - 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
需要修改的函數(shù) bool QSQLiteDriver::open(),函數(shù)體修改為:
- 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為密匙長(zhǎng)度
 - 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相應(yīng)庫(kù)文件。
小結(jié):關(guān)于解決QT 中Sqlite數(shù)據(jù)庫(kù)添加加密功能的內(nèi)容介紹完了,希望本文能幫你解決問(wèn)題,更多關(guān)于數(shù)據(jù)庫(kù)的內(nèi)容請(qǐng)參考編輯推薦。















 
 
 
 
 
 
 