您的位置 首页 趣闻

在VB中压缩ACCESS数据库

,在VB中压缩ACCESS数据库

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


免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: dawei

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

为您推荐

敢为天下后,OPPO Find N折叠屏的底气何在?

聊起OPPO,给我的第一印象就是本分,而在刚刚发布的OPPO Find N折叠屏手机上,我看到的是OPPO敢为天下后的底气。 当大家还沉浸在前一天发布的马里亚纳MariSilicon X影像NPU芯片时,OPPO又在12月15日推出了旗下首款折叠屏手机产品OPPO Find N。这是一款传闻已

OPPO Find N展开一刻,两大创新技术打破折痕路上意难平

荣耀发布了荣耀60系列的新品,特别是荣耀60 Pro的5000万像素超感知AI前置镜头和1亿像素超清后置主摄,是生活和游玩记录的好帮手。多镜录像功能在荣耀50系列上就已开始引入,在荣耀60系列上还新增了AI手势识别,Vlog隔空换镜这一创新功能,对拍摄Vlog来说相当

深扒天玑9000,发冲高关键年产品底气怎样?

联发科的天玑9000自公布以来,以过硬的技术实力迅速冲上了包括微博热搜在内的各类话题平台,吹响了冲击旗舰的号角。手机芯片进入4nm时代,arm推出面向未来十年的v9架构,5G技术R16即将商用,内存技术在升级面对全产业大跃进之势,联发科的天玑也迎来了上升的

想拍更远?汇总今年搭载潜望式长焦摄像头的手机

部分手机摄影发烧友已不再满足普通的2x长焦摄像头,他们需要拍的更远,画质也不能妥协,于是能拍更远的潜望式长焦摄像头就应运而生了。不过当镜头焦距上去了,后置镜头模组的厚度就难以控制,如果强行塞下更长焦段的镜头,模组厚度将达到1~2cm,这样的手机估

像素并非越高越好,为何5000万像素手机镜头倍受青欢迎

500万、800万、1200万像素,智能手机摄像头像素在早年发展的步伐相对还是比较缓慢,近来2000万、4800万、6400万、1.08亿像素接踵而来,手机摄像头的像素规格呈现出十分迅猛的迭代更新速度。然而在2019年首推量产1.08亿像素的智能手机后,至今手机上单颗传感

返回顶部