public static void CompactAccessDB(string connectionString, string mdwfilename)
{
    object objJRO = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"));

object[] oParams;
oParams = new object[] { connectionString,  "Provider=Microsoft.Jet.OLEDB.4.0;Data" +   " Source="+Application.StartupPath.Trim()+"\\tempdb.mdb;Jet OLEDB:Engine Type=5"};
objJRO.GetType().InvokeMember("CompactDatabase", 
System.Reflection.BindingFlags.InvokeMethod,
null,
objJRO,
oParams);
System.IO.File.Delete(mdwfilename);
System.IO.File.Move(Application.StartupPath.Trim()+"\\tempdb.mdb", mdwfilename); System.Runtime.InteropServices.Marshal.ReleaseComObject(objJRO); objJRO=null;
}    不添加组建,用c#代码压缩和修复.mdb数据库之后,
如果想重新设置数据库中某个表的自动编号起始值,数据库提示类型错误。
    但在access里面直接压缩和修复,就可以设置自动编号,而且会自动把编号的下一行设置为
最大值加1。不解阿。。如果不安装access,岂不是不能压缩修复数据库??

解决方案 »

  1.   

    我想也是不行的,access其实这个功能,就相当于一般数据库的dbms提供的功能,而“*.mdb”文件只是数据库文件,这个可以通过Ado.net直接访问,但是如果想做些dbms方面的功能则是不可能。
      

  2.   

    那如何才能实现直接对.mdb文件进行压缩和修复呢?
    而且不知道这样压缩后除了无法设置自动编号,
    还会不会造成其他操作的问题
      

  3.   

    建议你去csdn中
    数据库-〉Access去找找