CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

用VB如何实现对数据库的压缩?

楼主popety_bit(飞)2002-08-02 08:16:01 在 VB / 数据库(包含打印,安装,报表) 提问

一个数据库随着使用时间的增长,体积也会不断的膨胀,有时即使一个数据也没有,也会大的别人难以忍受,那怎么用VB实现对数据库的压缩呢?  
          我现在用的是ACCESS数据库,不过大家告诉我怎么压缩其它数据库,我也同样给分,请大家踊跃发言,我在这先向大家表示感谢。 问题点数:80、回复次数:6Top

1 楼szj820(都市精灵,机会没有,鸡会有的,努力努力)回复于 2002-08-02 08:19:27 得分 15

關注Top

2 楼zhang_pi(zhangpi)回复于 2002-08-02 08:58:45 得分 25

在VB中压缩ACCESS   数据库  
  (作者:石运伟 2001年04月16日   11:41)  
   
    如果您在   Access   数据库、Access   项目中删除数据或对象,可能会产生碎片并导致磁盘空间使用效率的降低。同时,数据库文件的大小并未减小,而是不断的增大,直至您的硬盘没有空间。有没有好的处理方法呢?其实,在Access中可以对数据库进行压缩优化以提升Access   数据库和   Access   项目的性能,这样的压缩处理的实质是复制该文件,并重新组织文件在磁盘上的存储方式。但是,在   Access   项目中进行这样的压缩不会影响到数据库对象(例如表或视图),因为它们是存储在   Microsoft   SQL   Server   数据库中而不是在   Access   项目本身中。同样,这样的压缩也不会影响到   Access   项目中的自动编号。在   Access   数据库中,如果已经从表的末尾删除了记录,压缩该数据库是就会重新设置自动编号值。添加的下一个记录的自动编号值将会比表中没有删除的最后记录的自动编号值大一。    
   
    下面介绍如何在VB中用一个CompactJetDatabase过程实现对Access数据库文件的压缩处理,在这个过程中有一个可选参数,就是在压缩前你是否需要把原有的数据库文件备份到临时目录(True或   False)。我用此办法使21.6MB的数据库压缩到仅仅300KB。    
   
    '   这些代码可放在模块中,在其他窗体也使用    
   
    Public   Declare   Function   GetTempPath   Lib   "kernel32"   Alias   _    
   
      "GetTempPathA"   (ByVal   nBufferLength   As   Long,   ByVal   lpBuffer   As   String)   As   Long    
   
    Public   Const   MAX_PATH   =   260    
   
    Public   Sub   CompactJetDatabase(Location   As   String,   Optional   BackupOriginal   As   Boolean   =   True)    
   
    On   Error   GoTo   CompactErr    
   
    Dim   strBackupFile   As   String    
   
    Dim   strTempFile   As   String    
   
    '检查数据库文件是否存在    
   
    If   Len(Dir(Location))   Then    
   
       '   如果需要备份就执行备份    
   
       If   BackupOriginal   =   True   Then    
   
       strBackupFile   =   GetTemporaryPath   &   "backup.mdb"    
   
       If   Len(Dir(strBackupFile))   Then   Kill   strBackupFile    
   
       FileCopy   Location,   strBackupFile    
   
       End   If    
   
       '   创建临时文件名    
   
       strTempFile   =   GetTemporaryPath   &   "temp.mdb"    
   
       If   Len(Dir(strTempFile))   Then   Kill   strTempFile    
   
       '通过DBEngine   压缩数据库文件    
   
       DBEngine.CompactDatabase   Location,   strTempFile    
   
       '   删除原来的数据库文件    
   
       Kill   Location    
   
       '   拷贝刚刚压缩过临时数据库文件至原来位置    
   
       FileCopy   strTempFile,   Location    
   
        
   
       '   删除临时文件    
   
       Kill   strTempFile    
   
    Else    
   
    End   If    
   
    CompactErr:    
   
        Exit   Sub    
   
    End   Sub    
   
    Public   Function   GetTemporaryPath()    
   
    Dim   strFolder   As   String    
   
    Dim   lngResult   As   Long    
   
    strFolder   =   String(MAX_PATH,   0)    
   
    lngResult   =   GetTempPath(MAX_PATH,   strFolder)    
   
    If   lngResult   <>   0   Then    
   
       GetTemporaryPath   =   Left(strFolder,   InStr(strFolder,   Chr(0))   -   1)    
   
    Else    
   
       GetTemporaryPath   =   ""    
   
    End   If    
   
    End   Function    
   
    以后您在使用Access数据库时可以尝试进行这样的压缩,您应该会发现我说的没有错。  
   
  Top

3 楼_l_(蠢瓜)(每天最多回答2个问题)回复于 2002-08-02 09:18:09 得分 20

http://jinesc.6600.org/myweb/disp.asp?idd=93&room=1010  
   
  DAO的你可以看看   visdata的源代码   在MSDN里有的  
  D:\Msdn\SAMPLES\VB98\VISDATATop

4 楼popety_bit(飞)回复于 2002-08-02 21:41:12 得分 0

我用的是ADO,以前的DBEngine.CompactDatabase   不认呀,怎么办呢?Top

5 楼progame(www.progame.org)回复于 2002-08-02 22:02:23 得分 20

DAO  
   
  JET4.0不用压的Top

6 楼popety_bit(飞)回复于 2002-08-03 08:40:31 得分 0

to     progame():      
          我用的是ADODB  
          dim   cn   as   ADODB.Connection    
          Set   cn   =   New   ADODB.Connection  
            cn.Open   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source="   &   App.Path   &   "\database.mdb;Persist   Security   Info=False"  
   
  这用不用压呢?我的数据库一开始是300多K,没几天,就变成几M了,我用得是ACCESS数据库,该怎么压呢,望指教。Top

相关问题

  • 如何用VB代码实现Access数据库的压缩?
  • 如何用VB代码实现对ACCESS数据库的压缩与修复
  • VB+ACCESS数据库压缩的问题
  • 压缩数据库
  • 用ADO怎样实现压缩和修复数据库?
  • 有谁在c++builder中实现压缩access数据库
  • 请教:ADO如何实现修复/压缩Access数据库?
  • 在VFP 中如何实现压缩ACCESS数据库
  • 怎样实现将备份的数据库文件压缩和解压缩?
  • 怎么用VB压缩数据库!马上给分!

关键词

  • 数据库
  • vb
  • 文件
  • access
  • 项目
  • strbackupfile
  • strtempfil
  • 压缩
  • gettemporarypath
  • dbengine

得分解答快速导航

  • 帖主:popety_bit
  • szj820
  • zhang_pi
  • _l_
  • progame

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo