Winforms 如何压缩&;用C#代码修复数据库访问2007?

Winforms 如何压缩&;用C#代码修复数据库访问2007?,winforms,ms-access-2007,Winforms,Ms Access 2007,我的C#winforms程序工作在数据库访问2007上 这个数据库膨胀了 有没有办法用C#代码压缩和修复这个数据库 如果我手动操作(通过访问),它会变得不那么肿胀 提前感谢您可以使用/compact参数,或者您可以使用interop并执行我在code project中找到的类似操作 C#使用MS Access命令行进行采样 var mdbFileName = Path.GetFullPath("youraccessdb.mdb"); if (!File.Exists(mdbFileName))

我的C#winforms程序工作在数据库访问2007上

这个数据库膨胀了

有没有办法用C#代码压缩和修复这个数据库

如果我手动操作(通过访问),它会变得不那么肿胀


提前感谢

您可以使用
/compact
参数,或者您可以使用interop并执行我在code project中找到的类似操作

C#使用MS Access命令行进行采样

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));

Access将安装在运行此应用程序的计算机上吗?它是MDB还是ACCDB?如果是前者,您需要的所有工具都安装在从Win2000开始的Windows的所有副本上——您可以使用Jet 4和DAO来进行压缩。如果是ACCDB,如果没有安装完全访问权限,则需要安装驱动程序。如何使用/compact?我尝试c:\MydataBase.mdb/compact-但不是work这需要安装完全访问权限(我不确定是否可以使用运行时进行压缩)。如果是MDB文件,您可以在Win2000上的任何Windows PC上使用DAO和JET4。如果是ACCDB,那么您需要安装ACE,然后可以使用DAO来完成,而不需要完全访问。如果安装了full Access 2007/2010,那么您仍然应该使用DAO,因为它比运行整个Access更高效。@David,我不反对。我只是提供了他要的东西。如果你想要一个DAO的示例,你可以按照我上面提供的链接进行操作。你提供的链接使用的是JRO,而不是DAO。JRO是一个愚蠢的库,它的存在仅仅是因为MS愚蠢的ADO everywhere活动。它不一定会安装在每台计算机上,而DAO是用于JET4的。那么请随意发布DAO的链接。我现在真的不想玩COM。