一直都沒有去找解決的辦法,雖然知道肯定可以復位。。一個字“懶”
先說一下復位的重要性,當我們在制作一個網站的時候,難免會對數據庫進行測試。這個過程中又不可避免的會產生一些垃圾數據,而且每個垃圾數據都占用了一個自動編號
刪除這些垃圾的目的無非就是三個:1、為了數據的“純淨”;2、減少數據庫大小;3、恢復自動編號
通常我們會利用兩種方式去刪除這些垃圾數據:1、直接在數據庫中對數據進行右鍵刪除數據;2、利用SQL語句“delete from [表名] where [條件]”來進行刪除相應的數據。這兩種方法達到的效果其實是一樣,前者是手動刪除的,後者就更為先進一點是利用了代碼刪除。
一般的做到這步就結束了刪除工作,一般不清楚復位的重要性的人就會到這步了,在寫這文章之前本人也有這個現象。在前面我們提到了刪除垃圾數據的目的,當我們完成上面的步驟後,其實我們只達到了一個目的:“為了數據庫的‘純淨’”,而後面的兩個目的是達不到的。我們可以從數據庫大小就能很直觀的看出來。利用上面的方法刪除數據庫,無論我們刪除多少數據,數據庫大小始終是保持在數據未刪除狀態。這說明我們使用的方法只是刪除了表面現象,同時當我們在表中輸入新的字段,自動編號是從之前刪除的編號+1開始排列的。因此我們還得繼續往下走,下面的內容就是告訴大家如何達到後兩種目的的。
在做完前面的步驟後,我們還必須做一個步驟,這個步驟也有兩種方法:
最直接辦法是直接在數據庫中操作復位,具體步驟是:工具 — 數據庫實用工具 — 壓縮和修復數據庫
還有一種就是利用代碼:
dim newfilestr as string
dim newfilestr1 as string
dim filenamestr as string filenamestr 被修復文件
newfilestr = "d:\new1.mdb" 臨時文件
deletefile newfilestr
newfilestr1 = "d:\new2.mdb" 臨時文件
deletefile newfilestr1
copyfile filenamestr, newfilestr, false
repairdatabase (newfilestr)
if password = "" then passWord 為數據庫密碼
dbengine.compactdatabase newfilestr, newfilestr1
else
dbengine.compactdatabase newfilestr, newfilestr1, , , ";pwd=" + trim(passWord)
end if
deletefile newfilestr
copyfile newfilestr1, filenamestr, false
deletefile newfilestr1
用過開源CMS的人應該知道,程度後台都有一個壓縮數據庫,估計就是這個原理。