2013-11-09 35 views
2

我有一個正在開發的C++程序,它處理許多不同類型的對象,這些對象需要在啓動時從文件中檢索。總文件大小略小於1GB。該程序必須至少在Windows 7和Linux上運行。程序的本地/專用sql數據庫

我的目標是從文件中讀取,並將其存儲到對象(包括數據驗證)提供的功能,所以我能想到的解決方案是:每各

  1. 只需提供至少一個功能對象類型從文件讀取,並將數據複製到新創建的對象。這是我迄今爲止所做的。
  2. 使用數據庫存儲數據並使用SQL檢索數據。

我想切換到第二個選項,但我有幾個限制:

  • 不准我與我的程序連接到互聯網,所以遠程服務器數據庫超出這個問題。
  • 我不允許製作一個強制用戶安裝其他軟件的程序,在本例中爲本地數據庫。
  • 訪問本地數據只能通過運行程序來完成:沒有額外的可執行文件,用戶可以運行修改或讀取文件。

我已經在網上搜索了一個C++庫,允許程序使用SQL語法存儲/檢索特定數據到本地文件,但到目前爲止我一無所有。我知道的數據庫軟件,比如MySQL,Postgresql等不會因爲我提到的限制而做。

我的主要問題是:有沒有這樣的C++庫,還是我必須實現我自己的? 我寧願它是免費的,但我可以做任何我能找到的。

如果沒有像這樣的庫,有沒有人知道任何其他替代方案爲本地存儲數據的c + +程序?如果我要實現自己的目標,那麼存儲我的對象的方式(如在文件數據結構中)是什麼方式(對於少於1GB的數據,它的速度非常慢)?

回答

2

SQLite符合除最後一個要求外的所有要求,禁止用戶修改程序之外的數據。不幸的是,這一點很難克服:即使您將數據存儲在自定義格式的純文件中,足夠高效和堅定的用戶也將始終能夠打破此限制。數據庫位於文件中,不需要網絡連接,並且可以作爲程序的一部分(它是鏈接到代碼的庫)安裝。

相關問題