如何清空、初始化一個數據庫?
思路:
方法一:通過ADO 或者系統表找到所有的表名,然後通過組織 JET SQL 的 DELETE FROM [TABLENAME] 語句來刪除所有表中的數據;
清空數據以後用 ADO 獲取系統的自動編號字段,判斷其是否為自動增加、長整字段,然後再組織 JET SQL 的 DDL 語句來初始化自動編號;
所有數據初始化結束後還要壓縮修復數據庫。
方法二:如果可能,在創建上述數據庫後就應該立即復制一份全新的備份,這樣就不用事後編程來進行初始化了。
方法三:如果是純 Access 環境可以用 TransferDatabase 的一個參數 StructureOnly 來導入結構本身。但是上述方法 VB+MDB ASP+MDB .Net+MDB 環境不適用
上述思路涉及到的知識點本站文章都已經論述過了。
只用ado列出所有的表《ADO/DAO/ADO.Net》
http://access911.net/index.asp?u1=a&u2=72FAB71E14DC
ado如何取得表的所有字段信息?《VBA》
http://access911.net/index.asp?u1=a&u2=74FAB11E10DC
《查詢》如何定義自動編號字段的初始值和步進值?
http://access911.net/index.asp?u1=a&u2=71FAB01E13DC
如何使用 ADO 來壓縮或修復 MS Access 文件?(jro的使用)《其他》
http://access911.net/index.asp?u1=a&u2=71FAB71E
這裡列出網友“wangtIEcheng(/+〆=ろ)”提供的部分代碼:
'在模塊中創建公共函數,執行即可。
'用ADO
Public Sub DeleteAllData()
Dim strSQL As String
Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Set Cnn = CurrentProject.Connection
strSQL = "SELECT Name FROM MSysObjects WHERE Flags=0 AND Type=1"
Rst.Open strSQL, Cnn, adOpenKeyset, adLockOptimistic
If Not Rst.EOF Then
Rst.MoveFirst
Do While Not Rst.EOF
strSQL = "delete * from " & Rst!Name
Cnn.Execute strSQL
Rst.MoveNext
Loop
End If
MsgBox "OK"
End Sub