国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > Access > 正文

在VB中壓縮ACCESS數(shù)據(jù)庫(kù)

2024-09-07 19:04:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
如果您在Access數(shù)據(jù)庫(kù)、Access項(xiàng)目中刪除數(shù)據(jù)或?qū)ο?,可能?huì)產(chǎn)生碎片并導(dǎo)致磁盤(pán)空間使用效率的降低。同時(shí),數(shù)據(jù)庫(kù)文件的大小并未減小,而是不斷的增大,直至您的硬盤(pán)沒(méi)有空間。有沒(méi)有好的處理方法呢?其實(shí),在Access中可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行壓縮優(yōu)化以提升Access數(shù)據(jù)庫(kù)和Access項(xiàng)目的性能,這樣的壓縮處理的實(shí)質(zhì)是復(fù)制該文件,并重新組織文件在磁盤(pán)上的存儲(chǔ)方式。但是,在Access項(xiàng)目中進(jìn)行這樣的壓縮不會(huì)影響到數(shù)據(jù)庫(kù)對(duì)象(例如表或視圖),因?yàn)樗鼈兪谴鎯?chǔ)在Microsoft SQL Server數(shù)據(jù)庫(kù)中而不是在Access項(xiàng)目本身中。同樣,這樣的壓縮也不會(huì)影響到Access項(xiàng)目中的自動(dòng)編號(hào)。在Access數(shù)據(jù)庫(kù)中,如果已經(jīng)從表的末尾刪除了記錄,壓縮該數(shù)據(jù)庫(kù)是就會(huì)重新設(shè)置自動(dòng)編號(hào)值。添加的下一個(gè)記錄的自動(dòng)編號(hào)值將會(huì)比表中沒(méi)有刪除的最后記錄的自動(dòng)編號(hào)值大一。

下面介紹如何在VB中用一個(gè)CompactJetDatabase過(guò)程實(shí)現(xiàn)對(duì)Access數(shù)據(jù)庫(kù)文件的壓縮處理,在這個(gè)過(guò)程中有一個(gè)可選參數(shù),就是在壓縮前你是否需要把原有的數(shù)據(jù)庫(kù)文件備份到臨時(shí)目錄(True或False)。我用此辦法使21.6MB的數(shù)據(jù)庫(kù)壓縮到僅僅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

‘檢查數(shù)據(jù)庫(kù)文件是否存在

If Len(Dir(Location)) Then

‘如果需要備份就執(zhí)行備份

If BackupOriginal = True Then

strBackupFile = GetTemporaryPath & "backup.mdb"

If Len(Dir(strBackupFile)) Then Kill strBackupFile

FileCopy Location, strBackupFile

End If

‘創(chuàng)建臨時(shí)文件名

strTempFile = GetTemporaryPath & "temp.mdb"

If Len(Dir(strTempFile)) Then Kill strTempFile

‘通過(guò)DBEngine壓縮數(shù)據(jù)庫(kù)文件

DBEngine.CompactDatabase Location, strTempFile

‘刪除原來(lái)的數(shù)據(jù)庫(kù)文件

Kill Location

‘拷貝剛剛壓縮過(guò)臨時(shí)數(shù)據(jù)庫(kù)文件至原來(lái)位置

FileCopy strTempFile, Location


‘刪除臨時(shí)文件

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數(shù)據(jù)庫(kù)時(shí)可以嘗試進(jìn)行這樣的壓縮,您應(yīng)該會(huì)發(fā)現(xiàn)我說(shuō)的沒(méi)有錯(cuò)。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌苏市| 北碚区| 南漳县| 浦东新区| 改则县| 祁连县| 县级市| 台江县| 东莞市| 宜章县| 科尔| 易门县| 巴彦淖尔市| 定州市| 舒兰市| 长岭县| 崇文区| 华亭县| 琼中| 逊克县| 彩票| 镇江市| 德州市| 寿光市| 诸暨市| 合作市| 光山县| 德清县| 平果县| 环江| 克山县| 合川市| 庄浪县| 林口县| 逊克县| 神池县| 马边| 萍乡市| 沁源县| 惠水县| 延庆县|