2012-11-29 135 views
2

我有一個內存中的sqlite數據庫,我想要轉換爲一個簡單的blob,並且我希望這樣做最好不使用任何序列化庫。將內存中的sqlite數據庫轉換爲blob/char數組

我也使用sqlite api備份調用將其序列化爲磁盤,這也可以用於我的目的嗎?

或者,是否有可能簡單地將數據庫從內存複製到一個字符數組以任何其他方式? (開發使用C++完成)

+0

所以你有你的內存中的SQLite數據庫,並希望將它作爲一個blob存儲到另一個數據庫? YO DAWG,我聽到你喜歡......(抱歉無法抗拒)。有一個很好的QT示例http://www.qtcentre.org/threads/30080-Loading-and-saving-in-memory-SQLITE-databases--因爲它不依賴於QT函數,所以你應該能夠C++只有std :: string和sqlite api的版本。無論如何,看到從sqlite的備份示例?也許超載流操作符來匹配您的需要 – Najzero

+0

好吧,不是說qt的例子做什麼備份API?我想要的是將整個數據庫轉換爲一個保存該內存的char數組。基本上memcopy'db分貝。備份API的內部做我想要的,我想,將需要看看。 – incrediblehulk

回答

2

SQLite不允許您直接訪問內存數據庫的內部存儲。

您可以implement your own VFS爲blob創建一個'文件'界面,但只是通過(臨時)磁盤文件聽起來要容易得多。

+0

謝謝,我現在正在研究vfs演示(http://www.sqlite.org/src/doc/trunk/src/test_demovfs.c),但我真的希望會有一個更簡單的(或者至少是直接的)方法。涉及文件確實非常容易,但我寧願不涉及文件系統。 – incrediblehulk

+0

後續工作:是否可以組合使用多個VFS圖層(我在猜測,否)?顯然已經有另一層用於另一個目的。 – incrediblehulk

+0

這將是可能的堆棧VFSes,但這不是你想要的(你想在該BLOB中存儲該DB * only *)。此外,SQLite的內存數據庫根本不使用VFS。 –

相關問題