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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

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