使用 VB.NET 程式碼壓縮及修復 Access 2007-2013 版本資料庫(.accdb)檔案

Compact and repair Access 2007-2013 database via Vb.net code

最近寫了一個小工具,資料庫使用 Access 2010 的檔案
而 Access 資料庫檔案的特性是檔案大小會持續增大,即使有執行 DELETE 語法
便決定寫一個 壓縮及修復資料庫 的功能,省去對 Office Access 的依賴

上 Google 查了一下,多數都是使用 Microsoft Jet and Replication Objects 2.6 Library 達來成
但是使用 JRO.JetEngine 時,透過 Jet OLEDB:Engine Type=? 指定目標檔案時
最高只能支援到 JET Version 4.x 也就是只能產出 Access 2003 版本檔案格式


後來嘗試使用
Microsoft DAO 3.6 Object Library 來處理
但是 DAO.DatabaseTypeEnum 這個陳述式中只能支援到 dbVersion40 也就是一樣只能到 Access 2003


最後找到了
Microsoft 14.0 Office Access database engine Object Library (版本12)
其中 Dao.DatabaseTypeEnum 最高支援到 dbVersion150 也就是 Access 2013

  • dbVersion120 : Access 2007
  • dbVersion140 : Access 2010
  • dbVersion150 : Access 2013

我電腦中版本的只能支援 Access 2013
有較新的版本應該就可以支援到 dbVersion160,也就是 Access 2016 和之後的版本

先上程式碼範例

參數1 和 參數2 是必須參數
參數3 選擇性:語系,大概是會影響到排序
參數4 選擇性:版本,範例是對應 Access 2010

 

參考: