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

第四步:调用方法:CompressDb(数据库文件绝对路径)

实例:CompressDb”c:\test\test.mdb”


实例(图一)

实例(图二)

点击下载

posted @ 2007-05-30 13:38  fisherman  阅读(636)  评论(0)    收藏  举报