我的编程空间,编程开发者的网络收藏夹
学习永远不晚

解决Access文件越来越大的问题

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

解决Access文件越来越大的问题

解决Access文件越来越大的问题[数据库教程]

有时候在使用Access文件的时候,随着增删改的不断的连续,会导致文件越来越大。即使手动删除或者使用delete语句删除了大量的数据记录,会发现文件的大小依然没有减掉,而且随着你再往里写数据,又会增大。

产生这个现象的原因跟Access本身的机制有关,具体也不清楚,好像是有什么历史记录还是什么存储碎片。ACCESS数据库在进行删除操作后,并不从该数据库中把数据清除掉,而是删除其索引相关的东西,虽然显示不出来,但是那些东西还是在文件中存在的,所以会引起ACCESS数据库文件越来越大。即使是我们不通过代码来访问access文件,而只是通过用户界面访问,随着文件的增大,也会带来一系列的问题。其症状包括:对象可能打开得更慢,查询可能比正常情况下运行的时间更长,各种典型操作通常似乎也需要使用更长时间。更何况如果在网站应用中,采用的是Access作为数据库的话,这里就有了性能上的问题。文件越来越大,会影响查询的速度,而且ACCESS是采用独占方式工作的,也就是说一次只能一个进程打开这个数据库执行操作,如果是多个用户的话就要"排队"了,所以ACCESS数据库如果变为很大的话,执行一个查询时间就会变长,而进程"排队"的等待时间也就会变得很久,专业型的数据库就不同,可以同时接收多个并发的访问,可以采用SQL数据库或其它大型并发数很强的数据库。

 

但是很多时候我们是需要Access文件,往不同的地方拷贝的,比如说,一个Server上生成了一个Access文件,需要拷贝到另外的Server上,而且Server间如果网速不是很好的话,会需要很长的时间来传输这个文件。所以这时候我们希望这个文件在内容不变的前提下,越小越好。所以我们可以去除这个Access的冗余信息。

 

Office Access本身就有这种功能,我们可以通过菜单找到这个工具,然后单击这个图标手动压缩。

技术分享图片

 

但是如果觉得每次手动去压缩的话很麻烦,我们可以设置每次关闭Access的时候,让它自己完成压缩。只要勾选下边的选框就可以。

 

技术分享图片

 

但是注意,上边的解决方案前提是,机器上安装了Office Access. 

 

比如说在一个服务器上,我有一个应用是以Access做数据库的,但是只是通过C#代码来操作这个文件,服务器上根本没有安装Office Access.随着代码不断的操作这个文件,这个文件还是会变大。然后我们如果想拷贝这个文件,但是越来越大,越来越慢。此时我们怎么压缩?我们可以在代码中加入一些代码,这些代码可以在功能完成后,自动的压缩Access文件。可以把这些代码加入到你的业务逻辑代码后边。等所有的东西都完成了,执行以下这几句代码就可以了。

首先引用C:Program FilesCommon FilesSystemadomsadox.dll,该DLL包含ADOX命名空间; 
接着引用C:Program FilesCommon FilesSystemadomsjro.dll,该DLL包含JRO命名空间 
注意:如,导入dll不成功,手动把com组件 导入为 .net组件,在用vs.net工具导入 

 

 1 ///压缩修复ACCESS数据库,mdbPath为数据库绝对路径
 2         public void Compact(string mdbPath)
 3         {
 4             if (!File.Exists(mdbPath)) //检查数据库是否已存在
 5             {
 6                 throw new Exception("目标数据库不存在,无法压缩");
 7             }
 8             //声明临时数据库的名称
 9             string temp = DateTime.Now.Year.ToString();
10             temp += DateTime.Now.Month.ToString();
11             temp += DateTime.Now.Day.ToString();
12             temp += DateTime.Now.Hour.ToString();
13             temp += DateTime.Now.Minute.ToString();
14             temp += DateTime.Now.Second.ToString() + ".bak";
15             temp = mdbPath.Substring(0, mdbPath.LastIndexOf("") + 1) + temp;
16             //定义临时数据库的连接字符串
17             string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
18             //定义目标数据库的连接字符串
19             string mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";
20             //创建一个JetEngineClass对象的实例
21             JetEngineClass jt = new JetEngineClass();
22             //使用JetEngineClass对象的CompactDatabase方法压缩修复数据库
23             jt.CompactDatabase(mdbPath2, temp2);
24             //拷贝临时数据库到目标数据库(覆盖)
25             File.Copy(temp, mdbPath, true);
26             //最后删除临时数据库
27             File.Delete(temp);
28         }

 

解决Access文件越来越大的问题

原文:https://www.cnblogs.com/xiongyunsheng/p/13437148.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

解决Access文件越来越大的问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

解决Access文件越来越大的问题

有时候在使用Access文件的时候,随着增删改的不断的连续,会导致文件越来越大。即使手动删除或者使用delete语句删除了大量的数据记录,会发现文件的大小依然没有减掉,而且随着你再往里写数据,又会增大。产生这个现象的原因跟Access本身的机制有关,具体也不清
解决Access文件越来越大的问题
2021-10-04

IDEA中target文件夹越来越大如何解决

这篇文章主要介绍了IDEA中target文件夹越来越大如何解决,此处给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:问题这是正常的target目录大小可以看到,target正常情况下,也就是第一次编译后的容
2023-06-06

如何解决Windows系统越来越慢的问题

这篇文章主要为大家展示了“如何解决Windows系统越来越慢的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Windows系统越来越慢的问题”这篇文章吧。方法一:打开计算机管理页面,
2023-06-28

C++中常见的数组越界问题解决方案

C++中常见的数组越界问题解决方案,需要具体代码示例在C++编程中,数组越界是一个常见的错误。当我们在访问数组中的元素时超出了数组的索引范围,就会导致程序出现未定义的行为。为了避免这类错误,我们需要采取一些解决方案。解决方案一:正确使用数组
2023-10-22

C语言数组越界引发的死循环问题解决

本文主要介绍了C语言数组越界引发的死循环问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

vue中的vendor.js文件过大问题及解决

这篇文章主要介绍了vue中的vendor.js文件过大问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

打开PDF文件后,总是弹出数字越界的解决方案教程

PDF是人们经常使用的电子文档格式之一。尽管用户非常喜爱它的印刷质量、不失真以及便携性等方面的优点,但在实际使用中经常面临各种问题。使用Windows 7 Ultimate的用户反映说,每次打开PDF文件时都会遇到数字越界提示,这一点非常令
2023-07-13

Python大数据量文本文件问题怎么解决

这篇文章主要介绍“Python大数据量文本文件问题怎么解决”,在日常操作中,相信很多人在Python大数据量文本文件问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python大数据量文本文件问题怎
2023-07-04

Linux下如何解决日志文件过大的问题

这篇文章主要介绍Linux下如何解决日志文件过大的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何让应用程序在后台执行:linux后台执行命令:&与nohup的用法通过以上方法,应用程序的日志会一直输出到日志文
2023-06-15

SpringMVC文件上传中要解决的问题大汇总

这篇文章主要介绍了SpringMVC文件上传中要解决的问题,主要有中文文件名编码问题,文件位置存储问题以及文件名冲突问题等等,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
2023-01-15

C#中获取文件大小问题怎么解决

本篇内容主要讲解“C#中获取文件大小问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中获取文件大小问题怎么解决”吧!C# 获取文件大小直接贴代码吧 ///
2023-07-05

如何解决python 使用openpyxl读写大文件的问题

这篇文章主要讲解了“如何解决python 使用openpyxl读写大文件的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决python 使用openpyxl读写大文件的问题”吧!由
2023-06-14

SpringBoot上传文件大小受限问题怎么解决

这篇文章主要介绍“SpringBoot上传文件大小受限问题怎么解决”,在日常操作中,相信很多人在SpringBoot上传文件大小受限问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoo
2023-06-30

编程热搜

目录