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

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

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

2024-09-07 19:05:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
如果您在access數(shù)據(jù)庫(kù)、Access項(xiàng)目中刪除數(shù)據(jù)或?qū)ο螅赡軙?huì)產(chǎn)生碎片并導(dǎo)致磁盤空間使用效率的降低。同時(shí),數(shù)據(jù)庫(kù)文件的大小并未減小,而是不斷的增大,直至您的硬盤沒有空間。有沒有好的處理方法呢?其實(shí),在Access中可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行壓縮優(yōu)化以提升Access數(shù)據(jù)庫(kù)和Access項(xiàng)目的性能,這樣的壓縮處理的實(shí)質(zhì)是復(fù)制該文件,并重新組織文件在磁盤上的存儲(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ì)比表中沒有刪除的最后記錄的自動(dòng)編號(hào)值大一。

下面介紹如何在VB中用一個(gè)CompactJetDatabase過程實(shí)現(xiàn)對(duì)Access數(shù)據(jù)庫(kù)文件的壓縮處理,在這個(gè)過程中有一個(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

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

DBEngine.CompactDatabase Location, strTempFile

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

Kill Location

‘拷貝剛剛壓縮過臨時(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)我說的沒有錯(cuò)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吉水县| 繁昌县| 柘城县| 永嘉县| 喀喇| 洛宁县| 金坛市| 留坝县| 宜宾县| 正宁县| 石狮市| 封丘县| 雷山县| 库尔勒市| 家居| 巴马| 永顺县| 沂源县| 唐山市| 宁河县| 海丰县| 台安县| 洛扎县| 托克托县| 会理县| 贡山| 翁牛特旗| 泰顺县| 祁连县| 澳门| 曲阳县| 高平市| 同江市| 商丘市| 赞皇县| 门源| 久治县| 顺昌县| 昭觉县| 固阳县| 射阳县|