为什么 数据库文件异常变大 VB编程写数据库,4000条1.2MB,5000条20.1MB
我再用VB操作数据库时,每次将一行记录,ADDNew 进数据库,开始文件大小没什么变化,再我输入了4000多条时,文件大小为1.02MB,可是,到5000条时,发现文件大小变为20.1MB,我又把原来的1.02MB得数据库文件手动增加1000条记录,文件大小没什么大变化,什么原因能造成,数据库变大呢?
我用的是ACCESS2000格式数据库文件,ADO控件,我再程序中,每次访问完数据库,都将数据库连接Close掉了,原来这样操作4000多次没出问题,什么原因能造成这样的现象,又怎么去掉这些多余的不分呢?
问题点数:0、回复次数:26Top
1 楼tonykong(烤鸡翅膀我最爱吃)回复于 2003-12-03 11:01:37 得分 0
收缩数据库。Top
2 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-03 11:16:51 得分 0
是否加入了图片?
Top
3 楼konglongkill(大龙)回复于 2003-12-03 11:20:23 得分 0
如何收缩数据库?
数据库中的记录全部为文本型,文字记录,无大的图片之类Top
4 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2003-12-03 12:33:44 得分 0
如何使用 ADO 來压缩或修复 Microsoft Access 文件?
版本:VB6
以前使用 DAO 時,Microsoft 有提供 CompactDatabase Method 來压缩 Microsoft Access 文件,RepairDatabase Method 來修复损坏的 Microsoft Access 文件,。可是自从 ADO 出來之后,好像忘了提供相对的压缩及修复 Microsoft Access 文件的功能。
現在 Microsoft 发现了这个问题了,也提供了解決方法,不过有版本上的限制!限制說明如下:
ActiveX Data Objects (ADO), version 2.1
Microsoft OLE DB Provider for Jet, version 4.0
這是 Microsoft 提出的 ADO 的延伸功能:Microsoft Jet OLE DB Provider and Replication Objects (JRO)
这个功能在 JET OLE DB Provider version 4.0 (Msjetoledb40.dll) 及 JRO version 2.1 (Msjro.dll) 中第一次被提出!
這些必要的 DLL 文件在您安裝了 MDAC 2.1 之后就有了,您可以在以下的网页中下载 MDAC 的最新版本!
Universal Data Access Web Site
在下载之前先到 VB6 中檢查一下,【控件】【設定引用項目】中的 Microsoft Jet and Replication Objects X.X library 如果已经是 2.1 以上的版本,您就可以不用下载了!
在您安裝了 MDAC 2.1 或以上的版本之后,您就可以使用 ADO 來压缩或修复 Microsoft Access 文件,下面的步骤告訴您如何使用 CompactDatabase Method 來压缩 Microsoft Access 文件:
1、新建一個新表单,选择功能表中的【控件】【設定引用項目】。
2、加入 Microsoft Jet and Replication Objects X.X library,其中 ( X.X 大于或等于 2.1 )。
3、在适当的地方加入以下的程序代码,記得要修改 data source 的內容及目地文件的路径:
Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\nwind2.mdb", _ '來源文件
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\abbc2.mdb;Jet OLEDB:Engine Type=4" '目的文件
在 DAO 3.60 之后,RepairDatabase Method 已经无法使用了,以上的程序代码显示了 ADO CompactDatabase Method 的用法,而它也取代了 DAO 3.5 時的 RepairDatabase method!
Top
5 楼jpinglee(想去海边)回复于 2003-12-03 12:41:05 得分 0
我也想知道怎么收缩数据库?
是不是产生了"垃圾"文件?Top
6 楼hupeng213(小鹏)回复于 2003-12-03 14:07:04 得分 0
access 数据库在使用的一段时间后,会出现突然使用空间很大的情况。
打开数据库后,在工具栏里选择整理数据库就行了。
不会破坏数据记录,但占用空间就会恢复。Top
7 楼nuago()回复于 2003-12-03 14:30:00 得分 0
UpTop
8 楼DawnPine(拂晓的松)回复于 2003-12-03 14:45:31 得分 0
手工操作:
用access打开要处理的文件,从菜单选:
工具、数据库实用工具、压缩和修复数据库
稍等片刻就OK了。
如果编程实现的话,可用楼上所说的JRO对象。楼上已经说得很详细了,我就不多说了。Top
9 楼Leftie(左手,为人民币服务)回复于 2003-12-03 14:50:07 得分 0
如果为SQL数据库,则清除日志文件
如果为ACCESS数据库,则压缩数据库Top
10 楼lirh(编程巨烂)回复于 2003-12-04 09:09:06 得分 0
uPTop
11 楼bigspook(开心就好)回复于 2003-12-04 09:36:21 得分 0
upTop
12 楼tweeg_nee(冰愁水绪)回复于 2003-12-04 09:53:03 得分 0
对啊,把数据库压缩一下Top
13 楼wangxuejun(计算机低手)回复于 2003-12-04 13:38:59 得分 0
如果不用ADO,只用DATA控件操作数据库,可有办法压缩ACCESS数据?Top
14 楼konglongkill(大龙)回复于 2003-12-04 14:07:58 得分 0
什么原因 或什么 情况下回造成 数据库 文件变大呢?
是不是没有Close ,还有什么要注意的呢?Top
15 楼chao778899(220330)回复于 2003-12-04 14:37:37 得分 0
和CLOSE没关系,先在工具栏里压缩一下吧Top
16 楼ZWARJH(ZWARJH)回复于 2003-12-09 14:35:05 得分 0
有密码怎么办?Top
17 楼aoenzh(独孤大虾)回复于 2003-12-09 15:41:52 得分 0
upTop
18 楼jilate()回复于 2003-12-09 18:41:57 得分 0
会不会是数据库的容量分配问题,类似与SQL SERVEFR 每次分配 比如说 10%
那羊这样就有可能一下变大很多了Top
19 楼Dublue(谁抢了我的名字)回复于 2003-12-09 20:58:27 得分 0
你分配控件是按照百分比分配的吧Top
20 楼Dublue(谁抢了我的名字)回复于 2003-12-09 20:58:42 得分 0
说错了,是空间Top
21 楼vincentzpf(飞宇)回复于 2003-12-10 08:37:39 得分 0
我想应该是你对数据库进行了多次操作,比如新增,删除这样的操作,那数据库就会增大。
你应该用程式或是手工对数据库做定期的修复和压缩的操作。因为在Access的数据库中你如果删除了这个数据,可是在它的数据库中就会存在空格的地方。所以要做以上操作。Top
22 楼xzp1030(山角)回复于 2003-12-10 09:35:07 得分 0
学习!Top
23 楼dy03(dy03)回复于 2003-12-10 09:51:38 得分 0
up
Top
24 楼of123()回复于 2003-12-10 10:21:28 得分 0
如果不用ADO,只用DATA控件操作数据库,可有办法压缩ACCESS数据?
有密码怎么办?
DAO:
DBEngine.CompactDataBase "原库名", "新库名", , , ";pwd=密码"
实例例如:
DBEngine.CompactDatabase "C:\Db1.mdb", "C:\Db2.mdb", , , ";pwd=1"
ADO:
JRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strSource & ";Jet OLEDB:Database Password=" & strPassword, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDestDB & ";Jet OLEDB:Database Password=" & strPassword
Top
25 楼cuizm(射天狼 http://www.j2soft.cn/)回复于 2003-12-10 10:46:36 得分 0
压缩一下数据库,在ACCESS中有压缩的工具!Top
26 楼ZWARJH(ZWARJH)回复于 2003-12-10 10:56:18 得分 0
如果我想生成另一个数据库,只是压现在的数据库,用程序怎么做Top




