Access数据库压缩/修复
Access数据库多次操作(插入、删除、导入)后,数据库文件会变的很大。为了解决这个问题,下面提供一个数据库压缩/修复的方案。
第一步:在项目中添加引用msjro.dll
第二步:导入名称空间:Imports JRO
第三步:插入压缩/修复函数
1
'
<summary>
2
3 ' 压缩/修复数据库
4
5 ' FileName要压缩/修复数据库文件的路径
6
7 ' </summary>
8
9 Protected Sub CompressDb() 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 ' FileName要压缩/修复数据库文件的路径
6
7 ' </summary>
8
9 Protected Sub CompressDb() 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
第四步:调用方法:CompressDb(数据库文件绝对路径)
实例:CompressDb(”c:\test\test.mdb”)
实例(图一)
实例(图二)
点击下载