我用C++对ACCESS数据库进行删除,添加, 发现操作多了之后,数据库增大了好多,
可是,实际上有效数据并没有增加很多,所以我想是冗余造成的吧如何用C++对ACCESS数据库进行操作, 实现压缩的功能

解决方案 »

  1.   

    压缩ACCESS数据库stdafx.h 文件中:
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
    #import "c:\program files\common files\system\ado\msjro.dll"压缩文件代码:
    try
    {
    CString csSourceConnection;
    CString csDestConnection; CoInitialize(NULL);

    csSourceConnection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database password=%
    s","c:\\源数据库.mdb","");
    csDestConnection.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database password=%
    s","c:\\压缩后数据库.mdb","");

    JRO::IJetEnginePtr jet(__uuidof(JRO::JetEngine));
    //-------------------------if "no_namespace" then--------------------------------
    //IJetEnginePtr jet = NULL;
    //jet.CreateInstance(__uuidof(JetEngine)); BeginWaitCursor();
    jet->CompactDatabase(csSourceConnection.AllocSysString(),csDestConnection.AllocSysString());
    EndWaitCursor();
    CoUninitialize();
    MessageBox("Database Compact Successful !~","Information",MB_ICONEXCLAMATION);
    }
    catch(_com_error &e)
    {
    CString csError;
    csError =(LPCTSTR) e.Description();
    MessageBox(csError,"Error Info",MB_ICONEXCLAMATION);
    }