Qt+SQLite資料加密的一種思路(記憶體資料庫)

來源:互聯網
上載者:User

標籤:

瞭解Qt是比較早的,可是一直沒有耐心去做一個練習。近期花了差不多兩周時間做了次Qt開發練習,基本完成了Qt的入門,逃脫微軟平台又邁出了幾小步。Qt雖然是C++的,但開發應用是比較方便的,我覺得它在介面設計、訊息傳遞方面超過了Delphi,甚至在一些方面更優於.net WinForm。給入門造成門檻的是關於Qt的中文資料相對較少,遇到問題尋找解決方案的成本較高,需要極大的耐心。

在學習Qt的時候在考慮一個問題——資料如何做到一定程度的保密而且能對資料進行方便的查詢?首先想到是用資料庫,而資料庫需要有專門的資料庫伺服器支援,比如Oracle、MySQL、SQLServer,有沒有一種不需要資料庫伺服器支援的資料庫呢?自然又會想到Access、SQLite等。Access 的加密形同虛設,SQLite要支援加密需要修改並重新編譯其源碼或者購買進階的SQLite版本。

當我開啟Qt內建的關於資料庫操作的Demo時,無意看到兩行代碼:

[code:c#]

QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); 
db.setDatabaseName(“:memory:”);

[/code]

用的是上面提到的SQLite資料庫,而這個資料庫的路徑並不像是在本地檔案的路徑。經查,這麼設定可以直接在記憶體中建立一個SQLite資料庫。這樣,資料是可以實現不落地的。那麼一個具有一定保密功能,同時又擁有資料庫查詢效能,而且無需資料庫伺服器支援的資料存放區方案有了。大概思路是這樣的:

1.在資源檔中附加文字格式設定的資料檔案,如果對安全性還有擔心,可以加密這個資料檔案。 
2.在程式第一次啟動時在記憶體中建立SQLite資料庫,將這些資料插入到庫中。

這樣之後,當需要對資料進行查詢、排序操作時就可以方便地通過資料庫功能來實現了,同時保證資料庫不落地,資料是比較安全的。唯一要付出的成本是每次程式啟動時都要去將資料插入到即時建立的資料庫中,適用於資料條數和單筆資料都不大,而查詢效能要求較高的情況。

http://wangxianyuan.com/post/qt-memory-sqlite-solution

Qt+SQLite資料加密的一種思路(記憶體資料庫)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.