一个ACCESS数据库
一次性写入30000多条的数据
数据库的大小达到8M多
但是删除这30000多条数据后
数据库文件的大小仍然是8M多用ACCESS打开后  里面什么都没有
怎么回事啊?

解决方案 »

  1.   

    我也碰到这个问题,有专门的API 吗?
      

  2.   


                有相应的API函数吗?希望通过编写程序来解决这个问题            总不能让使用者自己来压缩数据库啊
      

  3.   

    采用DAO操作ACCESS时有一个压缩函数API得。具体记不大清楚了。就像整理磁盘碎片那种功能
      

  4.   

    在MSDN中有一个用OLE DB接口来压缩ACCESS数据库得例子,找找吧,不是很难
      

  5.   

    CDaoWorkspace::CompactDatabase
    static void PASCAL CompactDatabase( LPCTSTR lpszSrcName, LPCTSTR lpszDestName, LPCTSTR lpszLocale = dbLangGeneral, int nOptions = 0 );
    throw( CDaoException, CMemoryException );这个或许对你有用.
      

  6.   

    #import "C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF","EndOfFile")
    using namespace ADOCG;
    #import "C:\Program Files\Common Files\SYSTEM\ADO\msjro.DLL" no_namespace TCHAR szDestSQL[100];
    TCHAR szSQL[100]; ::CoInitialize(NULL);
    sprintf(szSQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Info.mdb");
    IJetEnginePtr jet(__uuidof(JetEngine));
    sprintf(szDestSQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoTemp.mdb;");
    strcat(szDestSQL, "Jet OLEDB:Engine Type=5");
    jet->CompactDatabase(szSQL, szDestSQL);
    DeleteFile("Info.mdb");
    rename("InfoTemp.mdb", "Info.mdb");
    ::CoUninitialize();
      

  7.   

    As you change data in a database, the database file can become fragmented and use more disk space than necessary. Periodically, you should compact your database to defragment the database file.