2010-08-02 42 views
0

我的C#winforms程序工作的數據庫訪問2007如何使用C#代碼壓縮和修復數據庫訪問2007?

這個數據庫變腫了。

有沒有辦法通過C#代碼壓縮和修復這個數據庫?

如果我去做了手動(通過無線接入)它

感謝的提前變得不那麼腫

+0

將訪問這個應用程序運行在計算機上安裝? – 2010-08-02 19:14:24

+0

它是MDB還是ACCDB?如果前者,所有你需要的工具都安裝在Win2000的所有Windows副本上 - 你可以使用Jet 4和DAO來完成壓縮。如果它是ACCDB,如果您沒有安裝完整的Access,則需要安裝驅動程序。 – 2010-08-03 19:51:48

回答

1

您可以使用/compactcommand line參數爲msaccess.exe,也可以互操作使用,這樣做Compact And Repair我在代碼項目中找到。

使用的MS Access命令行C#示例...

var mdbFileName = Path.GetFullPath("youraccessdb.mdb"); 
if (!File.Exists(mdbFileName)) 
    throw new FileNotFoundException(
     "Could not find Access Database", 
     mdbFileName); 

var programFiles = Environment.GetEnvironmentVariable("ProgramFiles"); 
var accessPath = Path.Combine(
        programFiles, 
        @"Microsoft Office\Office12\MSACCESS.EXE"); 

if (!File.Exists(accessPath)) 
    throw new FileNotFoundException(
     "Could not find MSACCESS.EXE", 
     accessPath); 

var commandArgs = string.Format("/compact \"{0}\"", mdbFileName); 

var process = Process.Start(accessPath, commandArgs); 
process.WaitForExit(); 

if (process.ExitCode != 0) 
    throw new ApplicationException(string.Format(
     "Access Exited with Error Code [{0}]", 
     process.ExitCode)); 
+0

如何使用/緊湊?我嘗試c:\ MydataBase.mdb/compact - 但不工作 – Gold 2010-08-03 06:58:41

+0

@ Gold,請參閱我的答案的更新。 – 2010-08-03 18:23:02

+0

這需要安裝完整的Access(我不確定您是否可以使用運行時進行壓縮)。如果它是一個MDB文件,你可以在Win2000以上的任何Windows PC上使用DAO和Jet 4。如果它是ACCDB,那麼你需要安裝ACE,然後你可以使用DAO來完成它,而不需要完整的Access。如果安裝完整的Access 2007/2010,那麼您應該仍然使用DAO,因爲它比運行整個Access更高效。 – 2010-08-03 19:53:34

相關問題