2015-04-29 69 views
0

可以將BLOB(或任何其他數據)壓縮(即時)到SQLite3數據庫中嗎? 我在C#中使用System.Data.SQLite定位.net 3.5。SQLite數據庫中的壓縮C#

在我的搜索中,我一直看到連接字符串像這樣... 「datasource = base.db; version = 3; compress = true;」

但我找不到有關compress = true的信息,我已經將它添加到我的連接字符串進行測試,並將文件添加爲BLOB數據,但似乎沒有壓縮,我用例如大文本文件,所以不是已經壓縮的圖像或其他文件。

回答

1

對於我非常有限的知識,System.Data.SQLite.SQLiteConnection字符串中的「compress = True」參數未考慮在內。

基本上,它是沒用的:沒有爲.NET System.Data.SQLite提供內置的壓縮​​。

爲了帶來一些壓縮功能的System.Data.SQLite世界,你已經基本上有兩種選擇:

  • 使用一些第三方工具,無論是通過包括C庫之一,並重建中基於它的System.Data.SQLite:Proprietary SQLite Extensions: SEE, CEROD, ZIPVFS/SQLite Crypt /等。基於ADO.NET的商業ORM Devart提供了對我剛剛提到的加密選項的支持,似乎它們可以無縫地使用(儘管我個人從未嘗試過使用Devart那麼多)。
  • 圍繞System.Data.SQLite創建一個包裝器:是否用關於封裝數據的某些頭文件轉換所有數據,並使用某些具有blob數據相似性的字節集合來插入所有內容。您也可以在同一時間提供一些額外的加密過程。當然,這將比可用的C第三方庫慢得多,並且可能不足以根據您的要求(插入,更新,.. ,刪除速度),但至少這是免費(和耗時)的方法。這可以通過特定的SQLite ORM來實現,不應該很難實現,但相當耗時。
+0

謝謝,這是一個相當全面的答案,我非常感謝。 – TEDSON