跳至正文
-
欢迎您时常回来看看,不错过任何精彩文章。收藏本站!
第七手机网

中国大型手机资讯类网站! https://www.7shouji.com

第七手机网

中国大型手机资讯类网站! https://www.7shouji.com

  • 首页
  • 资讯
  • 热门品牌
  • 新机曝光
  • 安卓频道
  • 苹果频道
  • 智能家居
  • 手游
  • 5G频道
  • VR
  • 趣闻
  • 智能生活
  • 首页
  • 资讯
  • 热门品牌
  • 新机曝光
  • 安卓频道
  • 苹果频道
  • 智能家居
  • 手游
  • 5G频道
  • VR
  • 趣闻
  • 智能生活
关

搜索

趣闻

在VB中压缩ACCESS数据库

作者 dawei
2020年3月21日

如果您在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数据库时可以尝试进行这样的压缩,您应该会发现我说的没有错。


标签:

Access压缩数据库
作者

dawei

【声明】:第七手机网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

关注我
其他文章
上一个

总管家办公与客户管理系统–客户销售管理案例(一)

下一个

怎样经由ADO来压缩Microsoft Access数据库

广告

最新文章

  • 真我13震撼登场!性能摄影双巅峰 2026年7月27日
  • 真我GT7 Pro登场,性能怪兽碾压全场 2026年7月27日
  • 真我15 Pro:性能续航双满分,手游党必选! 2026年7月27日
  • 真我14 Pro初体验:性能影像双巅峰 2026年7月27日
  • 真我15降临!性能爆表,手游挚爱 2026年7月27日

广告

云标签

5G Galaxy iPhone iQOO OPPO Pro Realme Redmi vivo 一加 三星 中国 京东 人工智能 体验 全球 区块 华为 发布 小米 影像 微软 怎么 性能 手机 技术 数智网 新机 旗舰 智能 智能家居 曝光 机器人 正式 游戏 系列 美国 芯片 苹果 荣耀 谷歌 运营商 骁龙 高通 魅族

广告

友情链接:155手机网 151手机网 185手机网

第七手机网

大型手机资讯类网站! https://www.7shouji.com

Copyright 2026 — 第七手机网. All rights reserved.