如何使用c#压缩Msaccess数据库

是否可以使用c#压缩Msaccess数据库,如果是这样让我知道的方式?

你可以尝试这样的事情

public static void CompactAndRepair(string accessFile, Microsoft.Office.Interop.Access.Application app) { string tempFile = Path.Combine(Path.GetDirectoryName(accessFile), Path.GetRandomFileName() + Path.GetExtension(accessFile)); app.CompactRepair(accessFile, tempFile, false); app.Visible = false; FileInfo temp = new FileInfo(tempFile); temp.CopyTo(accessFile, true); temp.Delete(); } 

另请参见使用Application对象的CompactRepair方法压缩和修复数据库

 ... //invoke a CompactDatabase method of a JRO object //pass Parameters array objJRO.GetType().InvokeMember("CompactDatabase", System.Reflection.BindingFlags.InvokeMethod, null, objJRO, oParams); ... 

有关详细信息, 请访问http://www.codeproject.com/KB/database/mdbcompact_latebind.aspx

我用过这篇文章:
使用C#以编程方式压缩和修复Access数据库

我修改了一下,使其更简单易用:

 public static bool CompactAndRepairAccessDB(string source, string destination) { try { JetEngine engine = (JetEngine)HttpContext.Current.Server.CreateObject("JRO.JetEngine"); engine.CompactDatabase(string.Format("Data Source={0};Provider=Microsoft.Jet.OLEDB.4.0;", source), string.Format("Data Source={0};Provider=Microsoft.Jet.OLEDB.4.0;", destination)); File.Copy(destination, source, true); File.Delete(destination); return true; } catch { return false; } } 

别忘了:
在解决方案资源管理器中右键单击引用 – >添加引用 – > COM – >搜索’jet’ – >添加’Microsoft Jet和复制对象…’

并添加:

 using System.IO; using JRO;