偶对数据库不太了解,遇到个奇怪、难解决的问题想请教大家!一个信息录入系统,用的是ACCESS的数据库,每天会录入1000-1500条新数据偶用.NET 开发了一个数据分析系统,主要功能是对这1000-1500条数据做一个验证,
通过验证的数据添加到SQL的数据库,添加完以后就执行delete语句,清空ACCESS中的数据程序能正常运行,但运行一个多星期后,偶突然发现ACCESS的数据库在数据量波动不大的情况下,
文件不断的增大,现在数据库里面才有1000条数据,但文件大小就有30多兆(汗啊...)后面我新建了一个ACCESS的库,往里面录入1000条数据,大小才100多K,请问同样的数据量,
数据库文件的大小怎么会越来越大?

解决方案 »

  1.   

    当然会越来越大,可以在access里压缩下数据库
      

  2.   

    菜单 -- 工具 -- 数据库实用工具 -- 压缩和修复数据库这个操作解决了以上的问题,30兆的空数据库,压缩之后只剩100多K啦,谢谢高手的指点啦!压缩和修复数据库 这个操作能通过.NET来实现吗?或者说通过设置ACCESS数据库,使其在数据被删除之后,自动压缩数据库?ACCESS数据库有这样的设置吗?
      

  3.   

    压缩和修复数据库 这个操作能通过.NET来实现吗?
    ==
    我不清楚,猜测不行,程序一般是用来访问数据库的,对数据库的管理功能不够强的
      

  4.   

    原来ACCESS有这么大个漏洞的啊,没有数据也能占用数据库空间的...汗啊问题是那个录入系统是别人开发的,程序方面没法改!菜单 -- 工具 -- 数据库实用工具 -- 压缩和修复数据库这种操作对我们年轻人很简单,一看一试就知道啦,但要几十岁的会计去做,难度不小啊...如果让客户每次录入数据之前都手动压缩一下数据库,客户会很反感的...
      

  5.   

    引用DAO程序集,然后一条“DBEngine.CompactDatabase”语句就可以压缩。在多用户情况下最需要的是dbengine.repairdatabase 语句。不知道ole打开jet数据库默认是独占还是共享方式,如果是后者,这种数据库在一个用户程序意外中断时,数据库必“坏”,必须修复,并且还会丢一两个磁盘页面的数据。
      

  6.   

    在vs中“添加引用->COM->Microsoft DAO x.xx Object Library”。程序中写:
    var dbEngine=new dao.DBEngineClass();
    dbEngine.CompactDatabase(源数据库路径,目标数据库路径,......);
    dao以及DBEngineClass对象相当丰富,可以参考10年前的那些关于DAO3.5、DAO4.0的文章。
      

  7.   

    Jet 1.0数据库引擎出现于1994年的VB3.0中,后来的Access使用了Jet引擎来管理自己的数据。再后来,编程者很多都把Jet数据库叫做access数据库。其实,使用Jet引擎创建的.mdb文件中并没有access系统的那些管理对象。
      

  8.   


    由于这种数据库文件经常容易损坏,每次打开程序时第一步先修复一下.mdb文件(即使文件并没有损坏)才能确保程序总是顺利打开数据库。至于压缩,每周做一次就可以,或者在程序上增加一个菜单选择。
      

  9.   

    1、菜单 -- 工具 -- 数据库实用工具 -- 压缩和修复数据库2、dbEngine.CompactDatabase(源数据库路径,目标数据库路径,null,null,null);两种方案都是可行的,谢谢amandag、sp1234的指点,也谢谢参与讨论的朋友!最终我采用的方法是,验证数据并将数据添加到SQL之后,写个方法从另一个文件夹拷贝一个事先建好的数据库覆盖原来的数据库!(不用删数据、也不用压缩数据库,并且保证每次操作之前数据库是一个完好的文件)不知这种方法有什么弊端不?