瞭解Qt是比較早的,但是一直沒有耐心去作一個練習。近期花了差很少兩週時間作了次Qt開發練習,基本完成了Qt的入門,逃脫微軟平臺又邁出了幾小步。Qt雖然是C++的,但開發應用是比較方便的,我以爲它在界面設計、消息傳遞方面超過了Delphi,甚至在一些方面更優於.net WinForm。給入門形成門檻的是關於Qt的中文資料相對較少,遇到問題尋找解決方法的成本較高,須要極大的耐心。sql
在學習Qt的時候在考慮一個問題——數據如何作到必定程度的保密並且能對數據進行方便的查詢?首先想到是用數據庫,而數據庫須要有專門的數據庫服務器支持,好比Oracle、MySQL、SQLServer,有沒有一種不須要數據庫服務器支持的數據庫呢?天然又會想到Access、SQLite等。Access 的加密形同虛設,SQLite要支持加密須要修改並從新編譯其源碼或者購買高級的SQLite版本。數據庫
當我打開Qt自帶的關於數據庫操做的Demo時,無心看到兩行代碼:c#
[code:c#]安全
QSqlDatabase db = QSqlDatabase::addDatabase(「QSQLITE」);
db.setDatabaseName(「:memory:」);服務器
[/code]post
用的是上面提到的SQLite數據庫,而這個數據庫的路徑並不像是在本地文件的路徑。經查,這麼設定能夠直接在內存中建立一個SQLite數據庫。這樣,數據是能夠實現不落地的。那麼一個具備必定保密功能,同時又擁有數據庫查詢性能,並且無需數據庫服務器支持的數據存儲方案有了。大概思路是這樣的:性能
1.在資源文件中附加文本格式的數據文件,若是對安全性還有擔憂,能夠加密這個數據文件。
2.在程序第一次啓動時在內存中建立SQLite數據庫,將這些數據插入到庫中。學習
這樣以後,當須要對數據進行查詢、排序操做時就能夠方便地經過數據庫功能來實現了,同時保證數據庫不落地,數據是比較安全的。惟一要付出的成本是每次程序啓動時都要去將數據插入到即時建立的數據庫中,適用於數據條數和單筆數據都不大,而查詢性能要求較高的狀況。加密
http://wangxianyuan.com/post/qt-memory-sqlite-solution.net