Access数据库压缩和修复
Access数据库压缩/修复
Access数据库多次操作(插入、删除、导入)后,数据库文件会变的很大。为了解决这个问题,下面提供一个数据库压缩/修复的方案。
第一步:在项目中添加引用msjro.dll
第二步:导入名称空间:Imports JRO
第三步:插入压缩/修复函数
1
' <summary>
2
3
' 压缩/修复数据库
4
5
' FileName要压缩/修复数据库文件的路径
6
7
' </summary>
8
9
Protected Sub CompressDb(ByVal FileName As String)
10
11
Dim StrConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName
12
13
Dim StrConn2 As String = StrConn1.ToLower().Replace(".mdb", "_temp.mdb")
14
15
16
17
Dim fileName1 As String = FileName.Substring(FileName.LastIndexOf("\\") + 1)
18
19
Dim fileName2 As String = fileName1.ToLower().Replace(".mdb", "_temp.mdb")
20
21
22
23
Try
24
25
'先备份
26
27
File.Copy(fileName1, fileName1.ToLower().Replace(".mdb", "_bak.mdb"), True)
28
29
30
31
'开始压缩修复
32
33
Dim DatabaseEngin As JetEngine = New JetEngine()
34
35
DatabaseEngin.CompactDatabase(StrConn1, StrConn2)
36
37
38
39
'删除原来的Data.mdb,并将Data_temp.mdb更名为Data.mdb
40
41
File.Copy(fileName2, fileName1, True)
42
43
If File.Exists(fileName2) Then
44
45
File.Delete(fileName2)
46
47
End If
48
49
50
51
'删除备份
52
53
File.Delete(fileName1.ToLower().Replace(".mdb", "_bak.mdb"))
54
55
MessageBox.Show("压缩/修复数据库成功!")
56
57
Catch
58
59
'恢复备份
60
61
File.Copy(fileName1.ToLower().Replace(".mdb", "_bak.mdb"), fileName1, True)
62
63
64
65
'删除备份文件
66
67
File.Delete(fileName1.ToLower().Replace(".mdb", "_bak.mdb"))
68
69
MessageBox.Show("压缩/修复数据库失败!")
70
71
End Try
72
73
End Sub
74
' <summary>2

3
' 压缩/修复数据库4

5
' FileName要压缩/修复数据库文件的路径6

7
' </summary>8

9
Protected Sub CompressDb(ByVal FileName As String)10

11
Dim StrConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName12

13
Dim StrConn2 As String = StrConn1.ToLower().Replace(".mdb", "_temp.mdb")14

15
16

17
Dim fileName1 As String = FileName.Substring(FileName.LastIndexOf("\\") + 1)18

19
Dim fileName2 As String = fileName1.ToLower().Replace(".mdb", "_temp.mdb")20

21
22

23
Try24

25
'先备份26

27
File.Copy(fileName1, fileName1.ToLower().Replace(".mdb", "_bak.mdb"), True)28

29
30

31
'开始压缩修复32

33
Dim DatabaseEngin As JetEngine = New JetEngine()34

35
DatabaseEngin.CompactDatabase(StrConn1, StrConn2)36

37
38

39
'删除原来的Data.mdb,并将Data_temp.mdb更名为Data.mdb40

41
File.Copy(fileName2, fileName1, True)42

43
If File.Exists(fileName2) Then44

45
File.Delete(fileName2)46

47
End If48

49
50

51
'删除备份52

53
File.Delete(fileName1.ToLower().Replace(".mdb", "_bak.mdb"))54

55
MessageBox.Show("压缩/修复数据库成功!")56

57
Catch58

59
'恢复备份60

61
File.Copy(fileName1.ToLower().Replace(".mdb", "_bak.mdb"), fileName1, True)62

63
64

65
'删除备份文件66

67
File.Delete(fileName1.ToLower().Replace(".mdb", "_bak.mdb"))68

69
MessageBox.Show("压缩/修复数据库失败!")70

71
End Try72

73
End Sub74

第四步:调用方法:CompressDb(数据库文件绝对路径)
实例:CompressDb(”c:\test\test.mdb”)
实例(图一)
实例(图二)
点击下载

浙公网安备 33010602011771号